Схема простого обхода проблемы
во всех перехватчиках из цепочки определяем все события !Исходные классы
// класс1
Функция Событие_ПервоеСобытие(Параметры, ...) Экспорт
// свой код
КонецФункции
// + метод по установке перехвата
// класс2
Функция Событие_ДругоеСобытие(Параметры, ...) Экспорт
// свой код
КонецФункции
// + метод по установке перехвата
И последовательность установки перехвата следующая
Класс1.Перехватить(КонтФормы)
Класс2.Перехватить(КонтФормы)
И решение
1) Т.е. если у класса 1 есть событие1, то у класса2 также должно быть событие1,
т.е. в класс2 нужно добавить еще след.код
// класс2
Функция Событие_ПервоеСобытие(Параметры, ...) Экспорт
// код в п.3
КонецФункции
2) При установке повторного перехвата нужно выполнить код типа
// класс2
_ПредОбработчикСобытий = _Перехватчик.ПерехватитьСобытияГК(КонтФормы, Сам());
2) и обработчик события1 в классе2 должен просто вызвать обработчик события 1 из класса 1, т.е.
в класс2 нужно добавить еще след.код типа
// класс2
Функция Событие_ПервоеСобытие(Параметры, ...) Экспорт
// вызвать пред. обработчик или оригинальное событие в форме
Возврат _Перехватчик.ВыполнитьСобытиеГК(_ПредОбработчикСобытий, _КонтекстФормы, Параметры, ...);
КонецФункции
но универсальностью тут не пахнет