Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Стандарт 773: Отсутствует обязательная проверка признака ОбменДанными.Загрузка в обработчике события #40

Closed
marmyshev opened this issue Aug 12, 2021 · 0 comments · Fixed by #41
Assignees
Labels
bsl 1C Built-in Script Language standards Поддержка стандартов

Comments

@marmyshev
Copy link
Collaborator

marmyshev commented Aug 12, 2021

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

Английское название проверки
Mandatory checking of DataExchange.Load is absent in event handler

Правило анализа кода/метаданных
Для обработчика события в модуле объекта находим все стейтменты в условии которого есть "ОбменДанными.Загрузка" или аналогичная процедура, в теле условия должен быть возврат.

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

Мета-информация (пожалуйста, заполните если знаете):

  • Номер стандарта: 773, 752, 464, 465
  • Код проверки: data-exchange-load
  • Тип ошибки: PORTABILITY
  • Критичность: MAJOR
  • Код ошибки АПК: 75

Параметры проверки

  • Список процедур, в которых проверяется обмен данными, перечисленные через запятую

Текст ошибки

  • Отсутствует обязательная проверка признака ОбменДанными.Загрузка в обработчике события "ПриЗаписи"
  • Нет возврата в проверке ОбменДанными.Загрузка
  • Проверка ОбменДанными.Загрузка должна быть в начале обработчика события

Пример некорректного решения
Приведите пример(ы) некорректного кода (или метаданных)

Процедура ПередЗаписью(Отказ)
// код обработчика
// ...
КонецПроцедуры

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

Это необходимо для того, чтобы никакая бизнес-логика объекта не выполнялась при записи объекта через механизм обмена данными, поскольку она уже была выполнена для объекта в том узле, где он был создан. В этом случае все данные загружаются в ИБ «как есть», без искажений (изменений), проверок или каких-либо других дополнительных действий, препятствующих загрузке данных.

Пример корректного решения

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

// код обработчика
// ...
КонецПроцедуры

Дополнительные материалы

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bsl 1C Built-in Script Language standards Поддержка стандартов
Projects
None yet
1 participant