powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / как странно не работает ЭтаФорма.Модифицированность.
8 сообщений из 8, страница 1 из 1
как странно не работает ЭтаФорма.Модифицированность.
    #39730516
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем добра.

У меня при открытии документа в него подтягивается данные из регистров сведений в табличные части тем самым документ как бы уже "редактировался" - это понятно.
Поэтому при закрытии документа даже если пользователем там ничего не изменялось система предлагает сохранить документ - высвечивая звездочку на форме. Поэтому я свойство ЭтаФорма.Модифицированность сбрасываю в ложь.
Но это не работает.

Код: sql
1.
2.
3.
4.
5.
Процедура ПриОткрытии()
ОбновимПараметры();
ПрайсМатериалов    = Новый ТаблицаЗначений;
ЭтаФорма.Модифицированность=Ложь;
КонецПроцедуры


процедура ОбновимПараметры(); как раз и подтягивает из регистра сведений данные в таб. части. Я думал , что не важно что там в ней происходит, если в конце ЭтаФорма.Модифицированность=Ложь - должен быть выполнен сброс в ложь ; а не тут - то было. После этого события никакой код более не выполняется(проверял отладкой). а "звездочка" появляется это значит , что ЭтаФорма.Модифицированность каким-то образом обратилась в истину.
Проверял отладкой работу события ПриОткрытии(). на строке ЭтаФорма.Модифицированность=Ложь; присвоение происходит - вижу в табло. затем происходит завершение процедуры - форма документа. ВСЁ !!! на этой стадии ЭтаФорма.Модифицированность=истина;
пробовал чистить кэш, "тестирование и исправление" . ничего не помогает.
...
Рейтинг: 0 / 0
как странно не работает ЭтаФорма.Модифицированность.
    #39730559
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у реквизита есть свойство "ИзменяетДанные". если вы реквизит "задеваете" при обновлении (или чего вы там делаете) - форма модифицирруется автоматом


andron81пробовал чистить кэш, "тестирование и исправление" . ничего не помогает.

какой херней бы не заниматься - лишь бы не работать...
...
Рейтинг: 0 / 0
как странно не работает ЭтаФорма.Модифицированность.
    #39730564
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МодальноеОкноу реквизита есть свойство "ИзменяетДанные". если вы реквизит "задеваете" при обновлении (или чего вы там делаете) - форма модифицирруется автоматом


задеваю я только не реквизиты , а таб. части. они заполняются .
Но после я делаю ЭтаФорма.Модифицированность=Ложь; и эта строка должна убрать в игнор все задевания - теоретически.
а после ЭтаФорма.Модифицированность=Ложь; ничего я не делаю - проверял отладчиком.

МодальноеОкноandron81пробовал чистить кэш, "тестирование и исправление" . ничего не помогает.

какой херней бы не заниматься - лишь бы не работать...

ну это был совет из другого форума. возможно чтобы не повторяться никому в подсказках.
...
Рейтинг: 0 / 0
как странно не работает ЭтаФорма.Модифицированность.
    #39730598
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81а после ЭтаФорма.Модифицированность=Ложь; ничего я не делаю - проверял отладчиком.



чудес не бывает (кроме кривой платформы). берем и // куски кода. запускаем. смотрим когда пропадет эффект


andron81задеваю я только не реквизиты , а таб. части. они заполняются .

я имел ввиду не "реквизиты как метаданные". а реквизиты формы.
...
Рейтинг: 0 / 0
как странно не работает ЭтаФорма.Модифицированность.
    #39730614
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МодальноеОкноandron81а после ЭтаФорма.Модифицированность=Ложь; ничего я не делаю - проверял отладчиком.



чудес не бывает (кроме кривой платформы). берем и // куски кода. запускаем. смотрим когда пропадет эффект



пробовал так. эффект выявлял отладкой. отладка завершается в процедуре ПриОткрытии()
строкой ЭтаФорма.Модифицированность=Ложь; потом ход блуждания по коду прекращается и высвечивается форма уже со звездочкой.
...
Рейтинг: 0 / 0
как странно не работает ЭтаФорма.Модифицированность.
    #39730620
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

Распишу процедуры:

Код: sql
1.
2.
3.
4.
5.
Процедура ОбновимПараметры()
        СейчасСтраница=0;
    ЗаполнитьТаблицуПараметровЗаказа();
    ЗаполнитьТаблицуПараметровДетали(false,); 
КонецПроцедуры



если закомментить ЗаполнитьТаблицуПараметровЗаказа(); , то работает . То есть суть в ней (что странно).
Таким образом :

ЗаполнитьТаблицуПараметровЗаказа(); - виновата
ЗаполнитьТаблицуПараметровДетали(false,); - проходит успешно.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
Процедура ЗаполнитьТаблицуПараметровЗаказа()
        Объект = ЭтаФорма.ДокументОбъект;

Реквизиты = Новый Запрос(
        "Выбрать  Различные
            | ОТ.ПометкаУдаления,СВР.ТипРеквизита , СВР.Ссылка Реквизит, знРекв.Значение, СВР.Код ,
            | NULL как Отображать 
            | из 
         | Справочник.БЗ_СвойстваРеквизитов СВР
        |    левое соединение Справочник.БЗ_ОтображениеИПоследовательностьРеквизитов.РеквизитыЗаказа РЗ ПО СВР.Ссылка=РЗ.Реквизит
        |    левое соединение Справочник.БЗ_ОтображениеИПоследовательностьРеквизитов.СоставРеквизитовНаПараметрах СРНП ПО СВР.Ссылка=СРНП.Реквизит
        |    Левое соединение Справочник.БЗ_ОтображениеИПоследовательностьРеквизитов ОТ  ПО ОТ.Ссылка=РЗ.Ссылка или СРНП.Ссылка=ОТ.Ссылка
        |   Левое соединение РегистрСведений.БЗ_ЗначенияРеквизитов знРекв ПО знРекв.Заказ=&заказ и знРекв.Реквизит=СВР.Ссылка и знРекв.Объект=-1
        |    где 
        |   ОТ.ПометкаУдаления=&пометканаудаление и СВР.ПометкаУдаления=&пометканаудаление 
        |    и
        |  (РЗ.Отображать = &отображать или СРНП.Отображать=&отображать или  (Не (знРекв.Значение ЕСТЬ NULL )))"    );
    Реквизиты.УстановитьПараметр("заказ",                  Объект.Ссылка); 
    Реквизиты.УстановитьПараметр("отображать",         истина); 
    Реквизиты.УстановитьПараметр("пометканаудаление",     Ложь); 
    Реквизиты.УстановитьПараметр("пренадл",             "з"); 
    РеквизитыЗаказа.Очистить();
    РезультатЗапроса = Реквизиты.Выполнить(); 
              Выборка = РезультатЗапроса.Выбрать();             
        
            Пока Выборка.Следующий() Цикл
                СтрокаПараметров = Объект.РеквизитыЗаказа.Добавить();
                СтрокаПараметров.Реквизит = Выборка.Реквизит;
                СтрокаПараметров.Значение = Выборка.Значение;
                СтрокаПараметров.Код  = Выборка.Код;
                 СтрокаПараметров.ТипПоля = Выборка.ТипРеквизита;                
            КонецЦикла;



        КонецПроцедуры



Процедура ЗаполнитьТаблицуПараметровДетали(НоваяДеталь, номердетали)
    Объект = ЭтаФорма.ДокументОбъект;
    Если НоваяДеталь тогда//Если деталь новая (нажата кнопка добавить деталь) , то добавляем один комплект реквизитов для этой новой детали

        
        
Реквизиты = Новый Запрос(
        "Выбрать Различные  СВР.ТипРеквизита , СВР.Ссылка Реквизит, NULL как Значение, СВР.Код  из
         | Справочник.БЗ_СвойстваРеквизитов СВР
         | левое соединение Справочник.БЗ_ОтображениеИПоследовательностьРеквизитов.РеквизитыДетали РЗ ПО СВР.Ссылка=РЗ.Реквизит
         | Левое соединение Справочник.БЗ_ОтображениеИПоследовательностьРеквизитов ОТ  ПО ОТ.Ссылка=РЗ.Ссылка
         | где СВР.ОтдельноеЗначениеДляОбъекта=Истина и
         | СВР.Пренадлежность=&пренадл И СВР.ОтдельноеЗначениеДляОбъекта=Истина И ((ОТ.ПометкаУдаления=&пометканаудаление и СВР.ПометкаУдаления=&пометканаудаление и РЗ.Отображать = &отображать))");
    //Реквизиты.УстановитьПараметр("заказ",                  Объект.Ссылка); 

    Реквизиты.УстановитьПараметр("пометканаудаление",     False); 
    Реквизиты.УстановитьПараметр("пренадл",             "д"); 
    Реквизиты.УстановитьПараметр("отображать",             истина); 

    РезультатЗапроса = Реквизиты.Выполнить();
              Выборка = РезультатЗапроса.Выбрать();             
            Пока Выборка.Следующий() Цикл
                СтрокаПараметров = Объект.РеквизитыДетали.Добавить();
                СтрокаПараметров.Реквизит = Выборка.Реквизит;
                  СтрокаПараметров.БылоИзменение=Ложь;
                СтрокаПараметров.ТипПоля = Выборка.ТипРеквизита;
                СтрокаПараметров.НомерДетали = номердетали;
                СтрокаПараметров.Код = Выборка.Код;
            

            

            КонецЦикла;
        
        
        
        
    Иначе                        //Если деталь не новая (это происходит при запуске заказа) значит выдадим по всем листам

    Объект.РеквизитыДетали.Очистить();
    
    Для  Каждого Деталь из Объект.Детали  цикл 
    //Пока Деталь из Объект.Детали  цикл

        Реквизиты = Новый Запрос(
        "Выбрать Различные  СВР.ТипРеквизита , СВР.Ссылка Реквизит, знРекв.Значение Значение, СВР.Код из         
         | Справочник.БЗ_СвойстваРеквизитов СВР
         | левое соединение Справочник.БЗ_ОтображениеИПоследовательностьРеквизитов.РеквизитыДетали РЗ ПО СВР.Ссылка=РЗ.Реквизит
         | Левое соединение Справочник.БЗ_ОтображениеИПоследовательностьРеквизитов ОТ  ПО ОТ.Ссылка=РЗ.Ссылка
         |  Левое соединение РегистрСведений.БЗ_ЗначенияРеквизитов знРекв ПО знРекв.Заказ=&заказ и знРекв.Реквизит=СВР.Ссылка и знРекв.Объект=&коддетали
         | где СВР.ОтдельноеЗначениеДляОбъекта=Истина И 
         | СВР.Пренадлежность=&пренадл И СВР.ОтдельноеЗначениеДляОбъекта=Истина И ((ОТ.ПометкаУдаления=&пометканаудаление и СВР.ПометкаУдаления=&пометканаудаление и РЗ.Отображать = &отображать) или  (Не (знРекв.Значение ЕСТЬ NULL )))"    );
         
    Реквизиты.УстановитьПараметр("заказ",                  Объект.Ссылка); 
    Реквизиты.УстановитьПараметр("коддетали", Деталь.ИДДетали); 
    Реквизиты.УстановитьПараметр("отображать", истина); 
    

    Реквизиты.УстановитьПараметр("пометканаудаление",     Ложь); 
    Реквизиты.УстановитьПараметр("пренадл",             "д"); 
    РезультатЗапроса = Реквизиты.Выполнить();
    //Сообщить(Реквизиты.Текст);

              Выборка = РезультатЗапроса.Выбрать();             
            //Сообщить(Выборка.Количество());     

            Пока Выборка.Следующий() Цикл
            СтрокаПараметров = Объект.РеквизитыДетали.Добавить();
                СтрокаПараметров.Реквизит = Выборка.Реквизит;
                СтрокаПараметров.Значение = Выборка.Значение;
                   СтрокаПараметров.БылоИзменение=Ложь;

                СтрокаПараметров.ТипПоля = Выборка.ТипРеквизита;
                СтрокаПараметров.НомерДетали = Деталь.ИДДетали;
                СтрокаПараметров.Код = Выборка.Код;
              // СтрокаПараметров.ОтдельноеЗначениеДляОбъекта = Выборка.ОтдельноеЗначениеДляОбъекта;

                
            КонецЦикла;
            
            
            КонецЦикла;    
    КонецЕсли;//конец блока деталь не новая новаядеталь=false

КонецПроцедуры




то есть процедуры аналогичные . что одна , что вторая выполняют заполнения двух разных таб. частей.
после этих заполнений не делаю ничего кроме Форма.Модифицированность=Ложь; и это проверено отладчиком . хотя есть в одной из таб. частей событие ПриАктивизацииЯчейки, но туда при отладке не залезает ход выполнения.
Форма.Модифицированность=Ложь; должно отработоть. а ни фига
...
Рейтинг: 0 / 0
как странно не работает ЭтаФорма.Модифицированность.
    #39730645
Хитроглазый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81всем добра.

У меня при открытии документа в него подтягивается данные из регистров сведений в табличные части тем самым документ как бы уже "редактировался" - это понятно.

так делают только конченые mydaкu;
остальной текст далее просто не имеет смысла.

нормально будет сделать:
либо данные из регистров при открытии помещать в реквизиты формы, которые не реквизиты объекта;
либо перенести свой код в обработку заполнения модуля объекта, чтобы так заполнялся только новый документ.
...
Рейтинг: 0 / 0
как странно не работает ЭтаФорма.Модифицированность.
    #39730655
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Хитроглазый]andron81
либо данные из регистров при открытии помещать в реквизиты формы, которые не реквизиты объекта;



то есть на форме размещаем скажем табличное поле РеквизитыЗаказа и связываем его не с таб. частью документа , а с реквизитом формы. так ?

выходит форма перестанет вообще реагировать на какие-либо изменение в таб.поле формы. Верно я понял ?
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / как странно не работает ЭтаФорма.Модифицированность.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]