v8cs:event-handler-boolean-param¶
Использование булевого параметра обработчика события (event-handler-boolean-param)¶
- Категория:
bsl
- В обработчиках событий модулей объектов, наборов записей, форм и т.п., содержащих параметр
Отказ(ПриЗаписи,ОбработкаПроверкиЗаполнения,ТоварыПередНачаломДобавленияи т.п.), не следует присваивать этому параметру значениеЛожь. Это требование обусловлено тем, что, как правило, в коде обработчиков событий параметрОтказможет устанавливаться сразу в нескольких последовательных проверках (или в нескольких подписках на одно и то же событие). В таком случае к моменту выполнения очередной проверки параметрОтказуже может заранее содержать значениеИстина, и можно ошибочно сбросить его обратно вЛожь. Кроме того, при доработках конфигурации на внедрении число этих проверок может увеличиться.
Неправильно¶
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
...
Отказ = ЕстьОшибкиЗаполнения();
...
КонецПроцедуры
Правильно¶
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
. . .
Если ЕстьОшибкиЗаполнения() Тогда
Отказ = Истина;
КонецЕсли;
...
КонецПроцедуры
или
- Эти же требования справедливы для других аналогичных параметров обработчиков событий:
СтандартнаяОбработка,Выполнениеи др.
Например:
Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
Если Параметры.Свойства(...) Тогда
СтандартнаяОбработка = Ложь;
...
КонецЕсли;
КонецПроцедуры
- Неприемлемо в событиях объекта
ПриЗаписи,ПередЗаписью,ПередУдалением,ОбработкаПроведения,ОбработкаПроверкиЗаполненияи т.п устанавливать параметрОтказв значениеИстинабез информирования пользователя о причинах:
Неправильно¶
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Если Не ТоваровНаСкладеДостаточно() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
...
КонецПроцедуры
В таких случаях сообщение об ошибке не информативно и скрывает истинные причины проблемы, поэтому расследование ошибки требует значительных временных затрат:
Следует согласно пп. 1.1 и 1.3 стандарта Информирование пользователя корректно уведомить пользователя о причинах отказа с помощью сообщения или вызова исключения.
Правильно¶
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
Если Не ТоваровНаСкладеДостаточно() Тогда
ТекстСообщения = СтрШаблон(НСтр("ru='Не хватает %1 %2 товара %3, на складе %4'"), Количество, ЕдиницаИзмерения, Товар, Склад);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "Объект.Товары",, Отказ);
КонецЕсли;
...
КонецПроцедуры
См.¶
Соответствие стандартам¶
- #std686, п. 1: Работа с параметром "Отказ" в обработчиках событий — Диагностика v8cs:event-handler-boolean-param проверяет требование пункта 1 стандарта std686.
Источник диагностики¶
- Исходная статья
- Ревизия:
c8fe7932babf718c0ace3cf836a99d6a3b98d098 - Лицензия:
EPL-2.0