Определяем модифицированность объекта на сервере.
Задача для примера:
При записи документа "Заказ клиента", если у него при редактировании изменилось значение реквизита "Пометка удаления", нужно выполнить какой-то программный алгоритм. Если значение не изменилось, то алгоритм выполнять не нужно. В общем, цель – определить, изменилось ли значение реквизита "Пометка удаления" перед тем, как документ будет записан.
У управляемой формы есть свойство Модифицированность. Но в данном случае оно вряд ли пригодится, так как пометка удаления может устанавливаться не из формы документа. Дальше приходит на ум использовать метод объекта метаданых "ДокументОбъект" Модифицированность(). Однако в отладчике видно, что даже если ничего не менять в документе, то при записи метод Модифицированность() всё равно принимает значение Истина.
Но выход есть. Отследить и обработать изменение реквизита "Пометка удаления" можно с помощью метода ДополнительныеСвойства. Для этого нам понадобится внести небольшие дополнения в процедуры модуля объекта документа.
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения) Если НЕ Ссылка.ПометкаУдаления = ПометкаУдаления Тогда ДополнительныеСвойства.Вставить("ПометкаУдаленияИзменена", Истина); КонецЕсли; КонецПроцедуры
В процедуре ПередЗаписью() мы сравниваем значение реквизита "Пометка удаления" редактируемого документа с значением, которое записано в базе. Если значения не равны, то записываем признак изменённости в дополнительные свойства, и далее используем его в процедуре ПриЗаписи():
Процедура ПриЗаписи(Отказ) Если ДополнительныеСвойства.Свойство("ПометкаУдаленияИзменена", Истина) Тогда // Произвольная обработка условия... КонецЕсли; КонецПроцедуры