# Программный вызов обработчика события формы

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

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

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

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

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

## Правильно

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

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

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

## См.

- [Структура модуля](https://its.1c.ru/db/v8std#content:455:hdoc)
