Обработчик события в расширение

1. Aleck1281 30.05.24 13:49 Сейчас в теме
Здравствуйте! Пытаюсь добавить в расширение обработчик события "ПослеЗаписиНаСервере" модуля формы справочника. Платформа задаёт вопрос "Метод является обработчиком события. Добавить расширение обработчика?"
Если выбираю "Да", то у меня в списке вариантов не доступен вариант "Вызывать вместо (с контролем)". Если выбираю "Нет", то доступен. Кто объяснит, что это за прикол? Почему я не могу добавить контроль на обработчик события?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 30.05.24 14:16 Сейчас в теме
(1)
Если выбираю "Да", то у меня в списке вариантов не доступен вариант "Вызывать вместо (с контролем)".

В этом случае он регистрируется как обработчик события. У обработчика события это в принципе не возможно.

(1)
Если выбираю "Нет", то доступен.

В этом случае не происходит регистрация как обработчик события и выполняется простое расширение процедуры. Что соответственно позволяет использовать Вместо с контролем, как обычный расширяемый метод.
3. Aleck1281 30.05.24 15:41 Сейчас в теме
(2) Я правильно понимаю, что если я буду делать как расширение метода, то эта процедура не будет выполняться как обработчик события?
4. spacecraft 30.05.24 15:51 Сейчас в теме
(3) правильно. Это будет просто расширение метода.
Если программно вызвать основную процедуру, то сработает расширение метода.
Если сделать как обработчик события в расширении, то при программном вызове основной процедуры, процедура в расширении вызвана не будет.

PS. Но так как при срабатывании события, сработает основная процедура обработчика, а она расширена как метод, то соответственно будет работать как при обычном расширении метода.
Aleck1281; +1 Ответить
5. Aleck1281 30.05.24 16:01 Сейчас в теме
(4) Я немного не понял. Если я делаю как расширение метода, то когда заканчивается запись объекта, то запустится обработчик события "ПослеЗаписиНаСервере" из основной конфигурации, а не процедура из расширения?
7. spacecraft 30.05.24 16:48 Сейчас в теме
(5)
то запустится обработчик события "ПослеЗаписиНаСервере" из основной конфигурации, а не процедура из расширения?

Обработчик это не сама процедура. Процедура может быть привязана к обработчику события.
По событию вызывается обработчик. Если есть привязанная к обработчику процедура, то она вызывается.
Если в расширении процедура не привязанная к обработчику, то соответственно она не вызывается напрямую, но так как она расширяет основную процедуру, которая привязана, то выполняется ровно те же действия, как и при обычном выполнении расширяемой процедуры.
Итог: По события срабатывает обработчик. Вызывается процедура, которая привязана к этому обработчику. Далее срабатывает логика расширения этой процедуры. В итоге процедура в расширении то же вызывается, но не напрямую самим обработчиком.
6. Spurk 42 30.05.24 16:21 Сейчас в теме
Контроль нужен для того, чтобы при обновлении обновился типовой код. Иначе без него, может не обновиться и это приведет к проблемам, если ты сделал просто Вместо.

Если в основной конфе есть "ПослеЗаписиНаСервере", то добавь его в расширение как тебе нужно. До, после, вместо (с контролем или без него).
Если его нет, то создай в расширении свой обработчик. Единственное что тебе нужно предусмотреть, если сейчас в основной конфе этого обработчика нет, это не значит что вендор его не в корячит в будущем. Может возникнуть не приятная ситуация.

Поэтому тебе по факту контроль не нужен, он для платформы, а не для тебя.
https://tnsoft.ru/blog/ispolzovanie-annotatsii-izmenenieikontrol-na-primerah/ вот первая же ссылка в гугле.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот