Данный мини-класс, по сути, описывает технологию относительно удобной работы с множественными перехватчиками формы.
Например, вы хотите нарисовать журнал документов, при этом у вас уже есть класс, реализующий привязки и класс, реализующий табличное поле на запросе.
Как человек ленивый, вы уже не занимаетесь вызовом методов классов по событиям формы (например, метода класса привязок, который необходимо вызывать при изменении размера окна) , а повесили это все на перехватчик.
Теперь возникает проблема - каждый из двух классов перехватывает события формы, и их действия необходимо согласовывать. Ибо каждый последующий навешаный перехватчик забирает все на себя ("кто последний - тот и папа").
Собственно, в согласовании работы нет ничего сложного - достаточно запоминать предыдущий перехватчик в момент вызова ПерехватитьСобытияГК(), а потом, в обработчике перехваченного события, не забыть сделать ВыполнитьСобытиеГК.
Правда, есть еще один маленький нюанс - если во втором навешенном перехватчике нет какого-то обработчика события, то до первого событие просто не дойдет.
А значит в каждом классе необходимо описывать полный набор методов.
Но мы же с вами люди ленивые! Зачем делать ручками то, что можно успешно автоматизировать?
Мы возьмем, и унаследуем оба наших класса (привязок и табличного поля на запросе) от приложенного класса ТПерехватчик.
При инициализации класса-наследника делаем
Сам.ПолучитьБазовыйКласс("ТПерехватчик").Инит(_Контекст); //_Контекст - контекст перехватываемой формы
И дальше, единственное, что требуется от нас - после своих телодвижений не забывать в классе-наследнике вызывать событие базового класса.
Например, так:
Процедура Событие_ПриОтжатииЛевойКнопки(Сост, Гор, Верт, ФСО) Экспорт
_ПриОтжатииЛевойКнопки(Сост, Гор, Верт);
Сам(Контекст).ПолучитьБазовыйКласс("ТПерехватчик").Событие_ПриОтжатииЛевойКнопки(Сост, Гор, Верт, ФСО);
КонецПроцедуры // Событие_ПриОтжатииЛевойКнопки
Если же нам обработчик события не нужен - то вообще ничего не нужно делать: в качестве обработчика выступит метод базового класса, который перенаправит событие туда, куда нужно.
http://www.1cpp.ru/forum/YaBB.pl?num=1340972871