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