Хочу, чтобы одно и то же событие (например, ПослеОткрытия) на форме перехватывали два класса по очереди. А после чего вызвали оригинальное событие. Казалось бы, чего проще? Пишем:
Класс 1
Перем Перехватчик, ПредОбработчик;
Процедура Конструктор()
Перехватчик = СоздатьОбъект("Перехватчик");
ПредОбработчик = Перехватчик.ПерехватитьСобытияГК(внКонтекст, Сам());
КонецПроцедуры
Процедура Событие_ПослеОткрытия() Экспорт
Сообщить("Класс 1 - ПослеОткрытия");
Перехватчик.ВыполнитьСобытиеГК(ПредОбработчик, внКонтекст, "ПослеОткрытия");
КонецПроцедуры //Событие
Код класса 2 для упрощения - аналогичный, отличается сообщением. В контекст вставим аналогичную процедуру.
При запуске видим сообщения:
Класс 1 - ПослеОткрытия
Контекст - ПослеОткрытия
В общем, при выполнении кода цепочка не отрабатывает, т. к. первым вызывается событие в классе, который ПЕРВЫМ подключил перехват событий для данного контекста.
А первый класс, естественно, ничего не знает о последующих перехватчиках.
По моему, это ошибка компоненты - вызов событий нужно начинать с ПОСЛЕДНЕГО зарегистрированного для контекста Перехватчика, тогда будет возможность вызывать цепочки событий.