Перейти к содержанию
v8cs:invocation-form-event-handler

Программный вызов обработчика события формы (invocation-form-event-handler)

  • Категория: bsl

У каждого события должна быть назначена своя процедура-обработчик. Если одинаковые действия должны выполняться при возникновении событий в разных элементах формы следует:

  • создать отдельную процедуру (функцию), выполняющую необходимые действия
  • для каждого элемента формы создать отдельный обработчик с именем, назначаемым по умолчанию
  • из каждого обработчика вызвать требуемую процедуру (функцию).

Неправильно

&НаКлиенте
Процедура ПоИсполнителюПриИзменении(Элемент)
 ПараметрыОтбора = Новый Соответствие();
 ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору);
 ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю);
 УстановитьОтборСписка(Список, ПараметрыОтбора);
КонецПроцедуры

&НаКлиенте
Процедура ПоАвторуПриИзменении(Элемент)
 ПоИсполнителюПриИзменении(Неопределено);
КонецПроцедуры

Правильно

&НаКлиенте
Процедура ПоИсполнителюПриИзменении(Элемент)
 УстановитьОтбор();
КонецПроцедуры

&НаКлиенте
Процедура ПоАвторуПриИзменении(Элемент)
 УстановитьОтбор();
КонецПроцедуры

&НаСервере
Процедура УстановитьОтбор()
 ПараметрыОтбора = Новый Соответствие();
 ПараметрыОтбора.Вставить("ПоАвтору", ПоАвтору);
 ПараметрыОтбора.Вставить("ПоИсполнителю", ПоИсполнителю);
 УстановитьОтборСписка(Список, ПараметрыОтбора);
КонецПроцедуры
Это требование обусловлено тем, что логически процедуры-обработчики событий не предназначены для использования в коде модуля, а вызываются непосредственно платформой. Смешение же этих двух сценариев в одной процедуре неоправданно усложняет ее логику и снижает ее устойчивость (вместо одного предусмотренного сценария вызова - по событию из платформы - код процедуры должен рассчитывать и на другие "прямые" вызовы из кода).

См.

Соответствие стандартам

Источник диагностики