1С модифицированность

Определяем модифицированность объекта на сервере.

Задача для примера:

При записи документа «Заказ клиента», если у него при редактировании изменилось значение реквизита «Пометка удаления», нужно выполнить какой-то программный алгоритм. Если значение не изменилось, то алгоритм выполнять не нужно. В общем, цель – определить, изменилось ли значение реквизита «Пометка удаления» перед тем, как документ будет записан.

У управляемой формы есть свойство Модифицированность. Но в данном случае оно вряд ли пригодится, так как пометка удаления может устанавливаться не из формы документа. Дальше приходит на ум использовать метод объекта метаданых «ДокументОбъект» Модифицированность(). Однако в отладчике видно, что даже если ничего не менять в документе, то при записи метод Модифицированность() всё равно принимает значение Истина.

Но выход есть. Отследить и обработать изменение реквизита «Пометка удаления» можно с помощью метода ДополнительныеСвойства. Для этого нам понадобится внести небольшие дополнения в процедуры модуля объекта документа.

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если НЕ Ссылка.ПометкаУдаления = ПометкаУдаления Тогда ДополнительныеСвойства.Вставить(«ПометкаУдаленияИзменена», Истина); КонецЕсли; КонецПроцедуры

В процедуре ПередЗаписью() мы сравниваем значение реквизита «Пометка удаления» редактируемого документа с значением, которое записано в базе. Если значения не равны, то записываем признак изменённости в дополнительные свойства, и далее используем его в процедуре ПриЗаписи():

Процедура ПриЗаписи(Отказ) Если ДополнительныеСвойства.Свойство(«ПометкаУдаленияИзменена», Истина) Тогда // Произвольная обработка условия… КонецЕсли; КонецПроцедуры