Вопрос снят! Нашел решение. Все-таки пример оказался неверным(не в обиду конечно автору). Наверное нужно исправить, чтобы в последующем люди на эти грабли не натыкались. Оказалось, что все очень просто, достаточно забыть про пример и разобраться в том как это работает. А работает это следующим образом:
У компоненты есть предопределенные процедуры "СобытиеГМ_ПриОткрытии", "СобытиеГМ_ВводНового" и "СобытиеГМ_ВводНаОсновании". С ними ни у кого проблем не возникнет. Достаточно объявить их в вашем классе и вписать действие определяющее статус возврата (т.е. продолжить открытие - Возврат 1, иначе запретить открытие Возврат 0).
А вот например предопределенной процедуры "СобытиеГМ_ПриЗакрытии" не существует, поэтому нам при открытии нужно задать еще один класс, который будет выполнять обработку предопределенных процедур выбранного контекста. Вот именно здесь в примере и была ошибка:
Вот что было в примере:
Класс ИнициализаторФормы
Процедура Инит(Конт) Экспорт
КонтФормы = Конт;
лПерехватчик = СоздатьОбъект("Перехватчик");
лПерехватчик.ПерехватитьСобытияГК(КонтФормы, Контекст);
КонецПроцедуры
Функция Событие_ПриЗакрытии() Экспорт
Сообщить("Форма закрыта");
Возврат 1; // можно закрывать
КонецФункции
Желтым я выделил, то что является неправильным. Чтобы исправить эту ошибку нужно создать еще один класс, который будет отвечать за обработку действий контекста и вынести функцию Событие_ПриЗакрытии() в него, т.е получим такой простой класс:
Класс ОбработчикДействийФормы
Функция Событие_ПриЗакрытии() Экспорт
Сообщить("Форма закрыта");
Возврат 1; // можно закрывать
КонецФункции
Ну и естественно удалить этот текст из предыдущего класса. Также в предыдущий классе желтым выделено слово "Контекст", сюда нужно указать название класса, который мы сделали до этого, т.е. ОбработчикДействийФормы. Поличится следующее:
Класс ИнициалиаторФормы (исправленный)
Перем КонтФормы;
Процедура Инит(Конт) Экспорт
КонтФормы = Конт;
ПерехватчикФормы=СоздатьОбъект("ОбработчикДействийФормы");
лПерехватчик = СоздатьОбъект("Перехватчик");
лПерехватчик.ПерехватитьСобытияГК(КонтФормы, ПерехватчикФормы);
лПерехватчик = 0;
КонецПроцедуры
Ну вот и все! Третий класс из примера остается без изменений. Все работает
![Улыбка Улыбка](https://www.1cpp.ru/forumfiles/Templates/Forum/default/smiley.gif)
. Ну и чтобы такие вопросы как мой больше не возникали выкладываю тестовую конфигурацию, демонстрирующую отслеживание открытия, закрытия, ввода элементов и т.д.