Довідковий матеріал

Робота з параметром «Відмова» в обробниках подій

1. В обробниках подій модулів об'єктів, наборів записів, форм тощо, що містять параметр Відмова (ПриЗаписи, ОбработкаПроверкиЗаполнения, ТоварыПередНачаломДобавления тощо), не слід надавати цьому параметру значення Ложь.Ця вимога зумовлена тим, що, як правило, у коді обробників подій параметр Відмова може встановлюватися одразу в кількох послідовних перевірках (або в кількох підписках на одну й ту саму подію). У такому разі до моменту виконання чергової перевірки параметр Відмова вже може заздалегідь містити значення Истина, і його можна помилково скинути назад у Ложь.Крім того, під час доопрацювань конфігурації на впровадженні кількість цих перевірок може збільшитися.

Редакторська сцена з послідовністю перевірочних воріт і червоним маркером відмови, який зберігається після спрацювання та не скидається назад.

1. В обробниках подій модулів об'єктів, наборів записів, форм тощо, що містять параметр Відмова (ПриЗаписи, ОбработкаПроверкиЗаполнения, ТоварыПередНачаломДобавления тощо), не слід надавати цьому параметру значення Ложь.
Ця вимога зумовлена тим, що, як правило, у коді обробників подій параметр Відмова може встановлюватися одразу в кількох послідовних перевірках (або в кількох підписках на одну й ту саму подію). У такому разі до моменту виконання чергової перевірки параметр Відмова вже може заздалегідь містити значення Истина, і його можна помилково скинути назад у Ложь.
Крім того, під час доопрацювань конфігурації на впровадженні кількість цих перевірок може збільшитися.

Неправильно:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	...
	Отказ = ЕстьОшибкиЗаполнения();
	...
КонецПроцедуры

Правильно:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
	...
	Если ЕстьОшибкиЗаполнения() Тогда
		Отказ = Истина;
	КонецЕсли;
	...
КонецПроцедуры

або

Отказ = Отказ Или ЕстьОшибкиЗаполнения();

2. Ці самі вимоги справедливі для інших аналогічних параметрів обробників подій: СтандартнаяОбработка, Выполнение та ін.
Наприклад:

Процедура ОбработкаПолученияДанныхВыбора(ДанныеВыбора, Параметры, СтандартнаяОбработка)
	
	Если Параметры.Свойства(...) Тогда
		СтандартнаяОбработка = Ложь;
		...
		
	КонецЕсли;
	
КонецПроцедуры
Записатися телефоном