|   |   | 
| 
 | v8: Модифицированность формы программно измененного объекта | ☑ | ||
|---|---|---|---|---|
| 0
    
        Roman Go 09.09.11✎ 10:30 | 
        Нахожу запросом документ, получаю его объект, изменяю табл.часть, открываю
  но в форме не стоит указателя ее модифицированности и ее можно просто закрыть, не выдастся окно "записать?" как сделать чтобы форма открывалась модифицированная? | |||
| 1
    
        forforumandspam 09.09.11✎ 10:32 | 
        Заполнять тогда в форме, а не в объекте.     | |||
| 2
    
        Roman Go 09.09.11✎ 10:37 | 
        Форма = Док.ПолучитьФорму("ФормаДокумента",ЭтаФорма);
  Форма.Модифицированность = истина; Форма.ДокументОбъект.Комментарий = "1"; Форма.Комментарий = "2"; Форма.ОткрытьМодально(); Форма.Модифицированность = истина; форма не модифицированная открывается | |||
| 3
    
        Roman Go 09.09.11✎ 10:43 | 
        причем когда создаю документ он открывается модифицированным, а найденный и измененный открывается не модифицированным... проблема     | |||
| 4
    
        Defender aka LINN 09.09.11✎ 10:44 | 
        (2) Форма.ОткрытьМодально();
  Форма.Модифицированность = истина; Молодец. | |||
| 5
    
        Сергей Д 09.09.11✎ 10:45 | 
        Интересные дела происходят... Вот код:
  МойДокумент=Документы.ДокументыКонтрагентов.НайтиПоНомеру("000000001"); МойОбъект=МойДокумент.ПолучитьОбъект(); МойОбъект.Наименование=МойОбъект.Наименование+"1"; МояФорма=МойОбъект.ПолучитьФорму(); МояФорма.Открыть(); Форма открывается в самом деле без звездочки и закрывается без запроса. НО! Смотрю в отладчике: МояФорма.ДокументОбъект.Модифицированность() = ИСТИНА МояФорма.Модифицированность = ИСТИНА | |||
| 6
    
        Roman Go 09.09.11✎ 10:50 | 
        (4) я эту модифицированность вставлял уже чуть ли не через каждую строчку кода, в надежде, что форма поведет себя так как будто она фодифицирована, но проблема в том, что она реально модифицирована     | |||
| 7
    
        Сергей Д 09.09.11✎ 10:53 | 
        Что обычная форма, что управляемая - одинаково.     | |||
| 8
    
        Сергей Д 12.09.11✎ 13:16 | 
        Провел еще один эксперимент. Вот код:
  Процедура ПриНачалеРаботыСистемы() МойДокумент=Документы.ДокументыКонтрагентов.НайтиПоНомеру("000000001"); МойОбъект=МойДокумент.ПолучитьОбъект(); МойОбъект.Наименование=МойОбъект.Наименование+"АБВ"; МояФорма=МойОбъект.ПолучитьФорму(); // МояФорма.Модифицированность=истина; Сообщить("ПриНачалеРаботыСистемы"); Сообщить(МойОбъект.Модифицированность()); Сообщить(МояФорма.Модифицированность); МояФорма.Открыть(); КонецПроцедуры Модуль формы: Перем ФормаМодифицирована; Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) Сообщить("ПередОткрытием"); Сообщить(ЭтотОбъект.Модифицированность()); Сообщить(ЭтаФорма.Модифицированность); ФормаМодифицирована=ЭтаФорма.Модифицированность; КонецПроцедуры Процедура ПриОткрытии() Сообщить("ПриОткрытии"); Сообщить(ЭтотОбъект.Модифицированность()); Сообщить(ЭтаФорма.Модифицированность); ЭтаФорма.Модифицированность=ФормаМодифицирована; КонецПроцедуры Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка) Сообщить("ПередЗакрытием"); Сообщить(ЭтотОбъект.Модифицированность()); Сообщить(ЭтаФорма.Модифицированность); КонецПроцедуры При запуске получаем следующую последовательность сообщений: ПриНачалеРаботыСистемы Да Да ПередОткрытием Да Да ПриОткрытии Да Нет Т.е. при открытии формы признак ее (и только ее) модифицированности сбрасывается. И все встает на место, если перед открытием его запомнить, а при открытии - переприсвоить. | |||
| 9
    
        Defender aka LINN 12.09.11✎ 13:39 | 
        (8) Ну открывай не модально.     | |||
| 10
    
        Сергей Д 12.09.11✎ 13:44 | 
        (9) Так я и открываю не модально.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |