Перейти к содержанию

Наличие обязательной конструкции "Если ОбменДанными.Загрузка Тогда ..."

Обработчик события ПередЗаписью

В данном обработчике, как правило, должны выполняться действия, связанные с заполнением значений реквизитов объекта (набора записей, значения константы; далее упрощенно - "объект"), проверки правильности их заполнения, связанности состояния объекта с некоторыми внешними данными. Также в данном обработчике следует выполнять действия, связанные с обращением к "старым" значениям реквизитов объекта, сохраненным в базу данных (имеет смысл при редактировании уже записанных ранее объектов, наборов записей и т.п.).

Содержимое процедуры-обработчика события ПередЗаписью условно должно разделяться на две части:

  • действия выполняемые при каждой записи объекта (в том числе и когда объект записывается механизмом обмена данными),
  • и действия, которые не должны выполняться в случае записи объекта механизмом обмена.
Процедура ПередЗаписью(Отказ)
    // действия, которые должны выполняться всегда, в том числе и при обмене данных   
    // ...
    Если ОбменДанными.Загрузка Тогда   
        Возврат;
    КонецЕсли;  
    // действия, выполняемые в случае, если запись инициирована не механизмом обмена данными       
    // ...
КонецПроцедуры

В большинстве случаев, все действия выполняемые в обработчике ПередЗаписью должны располагаться в модуле после конструкции

Если ОбменДанными.Загрузка Тогда
    Возврат;
КонецЕсли;

То есть они не должны выполняться при записи объекта через механизм обмена данными, поскольку они уже были выполнены для объекта в том узле, где он был создан. В случае исключений, причина исключения из этого правила должна быть описана в комментарии к выполняемым действиям.

Обработчик события ПередУдалением

В данном обработчике модуля объекта, как правило, должны выполняться действия, которые необходимо выполнить перед удалением объекта. Например, перед удалением присоединенного файла может потребоваться произвести очистку ссылок на этот файл в объекте-владельце.

Содержимое процедуры-обработчика события ПередУдалением условно должно разделяться на две части: - действия выполняемые перед каждым удалением объекта (в том числе и когда объект удаляется механизмом обмена данными), - действия, которые не должны выполняться перед удалением объекта механизмом обмена.

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

В большинстве случаев, все действия выполняемые в обработчике ПередУдалением должны располагаться в модуле после конструкции

Если ОбменДанными.Загрузка Тогда
    Возврат;   
КонецЕсли;

Т.е. они не должны выполняться перед удалением объекта через механизм обмена данными, так как это может привести к ошибкам. Примером таких ошибок является обращение к предопределенным объектам после очистки области данных. В случае исключений, причина исключения из этого правила должна быть описана в комментарии к выполняемым действиям.

Обработчик события ПриЗаписи

В данном обработчике, как правило, выполняются действия связанные с записью связанной с объектом (набором записей, значения константы; далее - "объект") данных в других объектах конфигурации, выполнении других действий, связанных с изменением объекта.

Запрещается в данном обработчике изменять содержимое записываемого объекта, поскольку на момент выполнения обработчика, объект уже записан в БД.

Для обработчика события ПриЗаписи действуют те же требования в отношении разделения действий выполняемых при записи объекта механизмом обмена данными, что и для события ПередЗаписью (см. раздел Обработчик события ПередЗаписью).

Экранирование кода

// sonar:DataExchangeLoad:off
// sonar:DataExchangeLoad:on