#std773¶
Использование признака ОбменДанными.Загрузка в обработчиках событий объекта¶
1.¶
В обработчиках событий ПередЗаписью, ПриЗаписи, ПередУдалением сначала проверяйте признак ОбменДанными.Загрузка.
Процедура ПередЗаписью(Отказ)
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Код обработчика.
...
КонецПроцедуры
Это нужно, чтобы при обмене данными бизнес-логика объекта не выполнялась повторно. Объект должен загружаться в базу «как есть»: без дополнительных проверок, изменений и действий, которые могут исказить данные или помешать загрузке.
Такой же подход применяйте и в других механизмах загрузки:
Если механизм не учитывает особенности конкретной конфигурации, он должен иметь возможность записать объект так, как будто обработчика нет.
2.¶
Исключение: обмен, который при загрузке регистрирует изменения для выгрузки на другие узлы плана обмена.
Если используется подсистема Обмен данными БСП и нужно отключить регистрацию объектов, добавляйте дополнительное свойство ОтключитьМеханизмРегистрацииОбъектов:
Объект.ОбменДанными.Загрузка = Истина;
Объект.ДополнительныеСвойства.Вставить("ОтключитьМеханизмРегистрацииОбъектов");
Объект.Записать();
Если в конфигурации есть другие исключения из этого правила, обязательно поясняйте причину в комментарии к коду.
3.¶
Требования этого стандарта действуют и для обработчиков подписок на те же события.
4.¶
Если вызывающий код устанавливает ОбменДанными.Загрузка = Истина, он берет на себя ответственность за целостность данных объекта.
Например, в РИБ корректность обеспечивается в том узле, где объект был создан или изменен. В остальных случаях вызывающая сторона должна сама обеспечить корректное заполнение объекта.
При загрузке по правилам конвертации или формату EnterpriseData выполняйте все необходимые действия по заполнению и дозаполнению объекта.
Рекомендуется выносить такие действия в экспортные процедуры самого объекта и вызывать их до записи в режиме обмена.
См. также¶
- #std464: Обработчик события ПередЗаписью
- #std465: Обработчик события ПриЗаписи
- #std752: Обработчик события ПередУдалением
- #std771: Формат EnterpriseData