v8cs:invocation-form-event-handler¶
Программный вызов обработчика события формы (invocation-form-event-handler)¶
- Категория:
bsl
У каждого события должна быть назначена своя процедура-обработчик. Если одинаковые действия должны выполняться при возникновении событий в разных элементах формы следует:
- создать отдельную процедуру (функцию), выполняющую необходимые действия
- для каждого элемента формы создать отдельный обработчик с именем, назначаемым по умолчанию
- из каждого обработчика вызвать требуемую процедуру (функцию).
Неправильно¶
&НаКлиенте
Процедура ПоИсполнителюПриИзменении(Элемент)
ПараметрыОтбора = Новый Соответствие();
ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору);
ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю);
УстановитьОтборСписка(Список, ПараметрыОтбора);
КонецПроцедуры
&НаКлиенте
Процедура ПоАвторуПриИзменении(Элемент)
ПоИсполнителюПриИзменении(Неопределено);
КонецПроцедуры
Правильно¶
&НаКлиенте
Процедура ПоИсполнителюПриИзменении(Элемент)
УстановитьОтбор();
КонецПроцедуры
&НаКлиенте
Процедура ПоАвторуПриИзменении(Элемент)
УстановитьОтбор();
КонецПроцедуры
&НаСервере
Процедура УстановитьОтбор()
ПараметрыОтбора = Новый Соответствие();
ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору);
ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю);
УстановитьОтборСписка(Список, ПараметрыОтбора);
КонецПроцедуры
Это требование обусловлено тем, что логически процедуры-обработчики событий не предназначены для использования в коде модуля, а вызываются непосредственно платформой. Смешение же этих двух сценариев в одной процедуре неоправданно усложняет ее логику и снижает ее устойчивость (вместо одного предусмотренного сценария вызова - по событию из платформы - код процедуры должен рассчитывать и на другие "прямые" вызовы из кода).
См.¶
Соответствие стандартам¶
- #std455, п. 2.4.3: Структура модуля — Диагностика v8cs:invocation-form-event-handler проверяет требование пункта 2.4.3 стандарта std455.
Источник диагностики¶
- Исходная статья
- Ревизия:
c8fe7932babf718c0ace3cf836a99d6a3b98d098 - Лицензия:
EPL-2.0