Ежедневные будни программиста 1С - это канал с реальными задачами с работы, с собеседований, повседневные хитрости, подборки и гайды. Подойдет для начинающих и опытных
Автор: @chum1roma
Рекламу можно купить тут:
https://telega.in/c/e_budni_programmer
Post #516
4.35K
РУБРИКА «ЧёПоСтандартам»
Работа с параметром «Отказ» в обработчиках событий
Казалось бы, простая вещь, установить значение переменной Отказ в обработчиках событий (ПриЗаписи, ОбработкаПроверкиЗаполнения и т.д), но не тут-то было! Хотелось бы подсветить несколько моментов:
Необходимо помнить, что проверок, результат которых может привести к блокировке, может быть много как после вашего кода, так и до, и установив значение Ложь, все предыдущие проверки обнулятся. Такое возможно если для метода выполнено расширение с аннотацией "&Перед".
И ещё один важный момент, не забывать уведомлять пользователя об ошибке. Это, кстати, частично спасет если даже кто-то сделает "Отказ = Ложь;" так как внимательный пользователь может заметить сообщение об ошибке и перепроверить документ.
В основном ошибка в этом у новичков, хотя бывают случаи и у бывалых...
А ещё на моём канале есть пост - Чек лист по блокировке записи документа для новичков, там как раз про отказ)
P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std686
Работа с параметром «Отказ» в обработчиках событий
Казалось бы, простая вещь, установить значение переменной Отказ в обработчиках событий (ПриЗаписи, ОбработкаПроверкиЗаполнения и т.д), но не тут-то было! Хотелось бы подсветить несколько моментов:
#std686
1. В обработчиках событий модулей объектов, наборов записей, форм и т.п., содержащих параметр Отказ (ПриЗаписи, ОбработкаПроверкиЗаполнения, ТоварыПередНачаломДобавления и т.п.), не следует присваивать этому параметру значение Ложь.
Неправильно:
Отказ = ЕстьОшибкиЗаполнения();
Правильно:
Если ЕстьОшибкиЗаполнения() Тогда
Отказ = Истина;
КонецЕсли;
Необходимо помнить, что проверок, результат которых может привести к блокировке, может быть много как после вашего кода, так и до, и установив значение Ложь, все предыдущие проверки обнулятся. Такое возможно если для метода выполнено расширение с аннотацией "&Перед".
И ещё один важный момент, не забывать уведомлять пользователя об ошибке. Это, кстати, частично спасет если даже кто-то сделает "Отказ = Ложь;" так как внимательный пользователь может заметить сообщение об ошибке и перепроверить документ.
#std686
3. Неприемлемо в событиях объекта ПриЗаписи, ПередЗаписью, ПередУдалением, ОбработкаПроведения, ОбработкаПроверкиЗаполнения и т.п устанавливать параметр Отказ в значение Истина без информирования пользователя о причинах.
Неправильно:
Если Не ТоваровНаСкладеДостаточно() Тогда
Отказ = Истина;
Возврат;
КонецЕсли;
Правильно:
Если Не ТоваровНаСкладеДостаточно() Тогда
ТекстСообщения = СтрШаблон(НСтр("ru='Не хватает %1 %2 товара %3, на складе %4'"), Количество, ЕдиницаИзмерения, Товар, Склад);
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,, "Объект.Товары",, Отказ);
КонецЕсли;
В основном ошибка в этом у новичков, хотя бывают случаи и у бывалых...
А ещё на моём канале есть пост - Чек лист по блокировке записи документа для новичков, там как раз про отказ)
P.S. Полное описание стандарта по ссылке в начале поста
#ЧёПоСтандартам #std686
- 👍 27
- ❤ 5
- 👌 2






