#std773

Использование признака ОбменДанными.Загрузка в обработчиках событий объекта

1.

В обработчиках событий ПередЗаписью, ПриЗаписи, ПередУдалением сначала проверяйте признак ОбменДанными.Загрузка.

Процедура ПередЗаписью(Отказ)

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

    // Код обработчика.
    ...

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

Это нужно, чтобы при обмене данными бизнес-логика объекта не выполнялась повторно. Объект должен загружаться в базу «как есть»: без дополнительных проверок, изменений и действий, которые могут исказить данные или помешать загрузке.

Такой же подход применяйте и в других механизмах загрузки:

Объект.ОбменДанными.Загрузка = Истина;
Объект.Записать();

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

2.

Исключение: обмен, который при загрузке регистрирует изменения для выгрузки на другие узлы плана обмена.

Если используется подсистема Обмен данными БСП и нужно отключить регистрацию объектов, добавляйте дополнительное свойство ОтключитьМеханизмРегистрацииОбъектов:

Объект.ОбменДанными.Загрузка = Истина;
Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
Объект.Записать();

Если в конфигурации есть другие исключения из этого правила, обязательно поясняйте причину в комментарии к коду.

3.

Требования этого стандарта действуют и для обработчиков подписок на те же события.

4.

Если вызывающий код устанавливает ОбменДанными.Загрузка = Истина, он берет на себя ответственность за целостность данных объекта.

Например, в РИБ корректность обеспечивается в том узле, где объект был создан или изменен. В остальных случаях вызывающая сторона должна сама обеспечить корректное заполнение объекта.

При загрузке по правилам конвертации или формату EnterpriseData выполняйте все необходимые действия по заполнению и дозаполнению объекта. Рекомендуется выносить такие действия в экспортные процедуры самого объекта и вызывать их до записи в режиме обмена.

См. также
Источник

https://its.1c.ru/db/v8std#content:773