Перем _Перехватчик;

Функция Конт(Конт) Возврат Конт; КонецФункции // : Контекст
Функция Сам() Возврат Конт(Контекст); КонецФункции // : Контекст
Функция База() Возврат Конт(Контекст).ПолучитьБазовыйКласс(); КонецФункции  // : ТестовыйСлучай

Процедура Сетап() Экспорт
	База().Сетап(); // обязательно !!

	УправлениеНастройками = СоздатьОбъект("УправлениеНастройками");
	УправлениеНастройками.Включить("EnableHookEventsGroupContext");
	
	_Перехватчик = СоздатьОбъект("Перехватчик");
КонецПроцедуры

Процедура Сброс() Экспорт
	УправлениеНастройками = СоздатьОбъект("УправлениеНастройками");
	УправлениеНастройками.Сбросить("EnableHookEventsGroupContext");
	
	_Перехватчик.СнятьПерехватСобытийГлобальногоМодуля();
	глСброситьФлагОбработкиСобытийФормЕкс();
	
	База().Сброс(); // обязательно !!
КонецПроцедуры

Процедура Тест_ПерехватГрупповогоКонтекста() Экспорт
	Сам = Сам();
	//Сам().ПропуститьТест(0);

	//ПутьКФорме = КаталогИБ()+"ExtForms\ФормаПроверкиГрупповогоКонтекста.ert"; 	
	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", , ПутьКФорме);

	Журнал = Конт.Форма.Параметр; // TurboBL
	
	КлассПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК");
	КлассПерехватчикГК.Инициализация(Конт, Журнал);
	
	Перехватчик = СоздатьОбъект("Перехватчик");
	Перехватчик.ПерехватитьСобытияГК(Конт, КлассПерехватчикГК);
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же после закрытия формы
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;
	
	Сам.ЗакрытьФорму();
	
	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Форма::ПриОткрытии, КОП::Инициализация, КОП::ПриЗакрытии, Форма::ПриЗакрытии, КОП::ПриЗакрытии (конец), КОП::Деструктор");

КонецПроцедуры

Процедура Тест_ПерехватГрупповогоКонтекста_Событие() Экспорт
	Сам = Сам();
	//Сам().ПропуститьТест(0);

	//ПутьКФорме = КаталогИБ()+"ExtForms\ФормаПроверкиГрупповогоКонтекста.ert"; 	
	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК_События.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", , ПутьКФорме);

	Журнал = Конт.Форма.Параметр; // TurboBL
	
	КлассПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК_События");
	КлассПерехватчикГК.Инициализация(Конт, Журнал);
	
	Перехватчик = СоздатьОбъект("Перехватчик");
	Перехватчик.ПерехватитьСобытияГК(Конт, КлассПерехватчикГК);
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же после закрытия формы
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;
	
	Сам.ЗакрытьФорму();
	
	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Форма::ПриОткрытии, КОП::Инициализация, КОП::Событие_ПриЗакрытии, Форма::ПриЗакрытии, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_ПерехватГрупповогоКонтекста_Снять() Экспорт
	Сам = Сам();
	//Сам().ПропуститьТест(0);

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", , ПутьКФорме);

	Журнал = Конт.Форма.Параметр; // TurboBL
	
	КлассПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК");
	КлассПерехватчикГК.Инициализация(Конт, Журнал);
	
	Перехватчик = СоздатьОбъект("Перехватчик");
	Перехватчик.ПерехватитьСобытияГК(Конт, КлассПерехватчикГК);
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же, т.е. перед закрытием формы
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;
	
	Перехватчик.СнятьПерехватСобытийГK(Конт); // сейчас сработает деструктор
	
	Сам.ЗакрытьФорму();
	
	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Форма::ПриОткрытии, КОП::Инициализация, КОП::Деструктор, Форма::ПриЗакрытии");

КонецПроцедуры
   
Функция СоздатьДок()
	Док = СоздатьОбъект("Документ.Новый1");
	Док.Новый();
	Док.ДатаДок = РабочаяДата();
	Док.Записать();
	//ДОк.Провести();
	
	Возврат ДОк;
КонецФункции

Процедура Тест_ПерехватСобытийПроведенияДокумента() Экспорт
	Сам = Сам();
	
	Сам.ПропуститьТест(0, "Пока не реализовано");

	Журнал=СоздатьОбъект("ЖурналВызоваМетодов");
                        
	Док = СоздатьДок();
	
	КлассПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК");
	КлассПерехватчикГК.Инициализация(Док, Журнал);
	               
	//Информатор = СоздатьОбъект("Информатор");
	//Таб = Информатор.ПолучитьТаблицуМетодов(Док);
//Таб.ВыбратьСтроку("");
	Перехватчик = СоздатьОбъект("Перехватчик");
	Перехватчик.ПерехватитьСобытияПроведенияДокумента(Док, КлассПерехватчикГК);
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;

	ДОк.Провести();
	ДОк = 0;
	
	Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::ОбработкаПроведения, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_ПерехватСобытийПроведенияДокумента2() Экспорт
	Сам = Сам();
	
	Сам.ПропуститьТест(0, "Пока не реализовано");

	Журнал=СоздатьОбъект("ЖурналВызоваМетодов");
                        
	Док = СоздатьДок();
	
	КлассПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК");
	КлассПерехватчикГК.Инициализация(Док, Журнал);
	               
	//Информатор = СоздатьОбъект("Информатор");
	//Таб = Информатор.ПолучитьТаблицуМетодов(Док);
//Таб.ВыбратьСтроку("");
	Перехватчик = СоздатьОбъект("Перехватчик");
	Перехватчик.ПерехватитьСобытияПроведенияДокумента(Док, КлассПерехватчикГК);
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;

	ДОк.Провести(); 
Сообщить("============  СделатьНеПроведенным ====================== = ");	
	ДОк.СделатьНеПроведенным();
Сообщить("============  СделатьНеПроведенным end ====================== = ");	
	ДОк = 0;
	
	Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::ОбработкаПроведения, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_ПерехватСобытийПроведенияДокумента_УдалитьПерехваченныйДок() Экспорт
	Сам = Сам();
	
	Сам.ПропуститьТест(0, "Пока не реализовано");

	Журнал=СоздатьОбъект("ЖурналВызоваМетодов");
                        
	Док = СоздатьДок();
	
	КлассПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК");
	КлассПерехватчикГК.Инициализация(Док, Журнал);
	               
	Перехватчик = СоздатьОбъект("Перехватчик");
	Перехватчик.ПерехватитьСобытияПроведенияДокумента(Док, КлассПерехватчикГК);
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;

	// чтобы убедиться, что после удаления документа перехват также отключается
	ДОк = 0;
	Док = СоздатьДок();
	
	ДОк.Провести();
	
	Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	//Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::ОбработкаПроведения, КОП::Деструктор");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::Деструктор");

КонецПроцедуры

Функция ОткрытьДокПоПерехвату(Параметр)
	Док = СоздатьОбъект("Документ.Док_ДляПерехватаСобытий1С");
	Док.Новый();
	Док.ДатаДок = РабочаяДата();
	Док.Записать();
	//ДОк.Провести();

	Доки = СоздатьОбъект("Документ.Док_ДляПерехватаСобытий1С");
	Если Доки.НайтиДокумент(Док) = 0 Тогда
		Модуль = СоздатьОбъект("ВыполняемыйМодуль");
		Модуль.ВыброситьИскл(, "Не найден документ");
	КонецЕсли; 
	             
	Док = Доки.ТекущийДокумент();
	КонтФормы = Сам().ОткрытьФорму(Док, Параметр, 0);
	
	Возврат КонтФормы;
КонецФункции

Процедура Тест_ПерехватСобытийФормыДокумента() Экспорт
	Сам = Сам();
	
	Сам.ПропуститьТест(0, "Пока не реализовано");

	Журнал=СоздатьОбъект("ЖурналВызоваМетодов");
                        
	КонтДокумента = ОткрытьДокПоПерехвату(Журнал);
	//КонтДокумента.ДатаДок = РабочаяДата()-1;
Сообщить("КонтДокумента.Модифицированность() = <"+КонтДокумента.Модифицированность()+">");

	//КонтДокумента.СтрокаДействийФормы = "#Записать";
	
	КлассПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК_Документ");
	КлассПерехватчикГК.Инициализация(КонтДокумента, Журнал);
	               
//	//Информатор = СоздатьОбъект("Информатор");
//	//Таб = Информатор.ПолучитьТаблицуМетодов(Док);
////Таб.ВыбратьСтроку("");
//	Перехватчик = СоздатьОбъект("Перехватчик");
//	Перехватчик.ПерехватитьСобытияПроведенияДокумента(Док, КлассПерехватчикГК);
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;

	//ДОк.Провести();
	//ДОк = 0;
	КонтДокумента.ЗаписатьИзФормы();
	КонтДокумента.ПриЗаписи();
	
	Сам.ЗакрытьФорму();
	//Система = СоздатьОбъект("Система");
	//Система.ЗакрытьФорму(Сам.КонтекстФормы, 1);
	//Сам.КонтекстФормы.Форма.Закрыть(0);
	
	Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::ОбработкаПроведения, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_СобытиеFormEx() Экспорт
	Сам = Сам();
	
	Попытка
		Сервис = СоздатьОбъект("Сервис");
	Исключение
		Сам().ПропуститьТест(0, "Не загружена ВК FormEx");
	КонецПопытки;

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК_СобытияFormEx.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", , ПутьКФорме);

	//Журнал = Конт.Форма.Параметр; // TurboBL
	//
	//КлассПерехватчикГК = СоздатьОбъект("КлассПерехватчикГК_СобытияFormEx");
	//КлассПерехватчикГК.Инициализация(Конт, Журнал);
	//
	//Перехватчик = СоздатьОбъект("Перехватчик");
	//Перехватчик.ПерехватитьСобытияГК(Конт, КлассПерехватчикГК);
	КлассПерехватчикГК = Конт.Форма.Параметр; // TurboBL
	Журнал = КлассПерехватчикГК.Журнал;
	
	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Форма::ПриОткрытии, КОП::Инициализация, КОП::Событие_ПослеСозданияФормы, КОП::Событие_ПослеОткрытия, Форма::ПослеОткрытия");
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же после закрытия формы
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;
	
	Сам.ЗакрытьФорму();
	
	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Форма::ПриОткрытии, КОП::Инициализация, КОП::Событие_ПослеСозданияФормы, КОП::Событие_ПослеОткрытия, Форма::ПослеОткрытия, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_СобытиеFormEx_ПриНажатииКнопкиКлавиатуры() Экспорт
	Сам = Сам();
	
	Попытка
		Сервис = СоздатьОбъект("Сервис");
	Исключение
		Сам().ПропуститьТест(0, "Не загружена ВК FormEx");
	КонецПопытки;

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК_СобытияFormEx.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", , ПутьКФорме);

	КлассПерехватчикГК = Конт.Форма.Параметр; // TurboBL
	Журнал = КлассПерехватчикГК.Журнал;
                                          
	Сервис.ЭмулироватьКлавиатуру("{TAB}", 1);

	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Форма::ПриОткрытии, КОП::Инициализация, КОП::Событие_ПослеСозданияФормы, КОП::Событие_ПослеОткрытия, Форма::ПослеОткрытия, КОП::ПриНажатииКнопкиКлавиатуры<9>");
КонецПроцедуры

// тест для проверки работы 1С++::Перехватчика и оптимизатора событий в FormEx
// одно из событий ФормЕкс должно сработать ДО перехвата !
Процедура Тест_СобытиеFormEx_ПерехватПослеСобытияFormEx() Экспорт
	Сам = Сам();
	
	Попытка
		Сервис = СоздатьОбъект("Сервис");
	Исключение
		Сам().ПропуститьТест(0, "Не загружена ВК FormEx");
	КонецПопытки;

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК_СобытияFormExДоПерехвата.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", , ПутьКФорме);

	КлассПерехватчикГК = Конт.Форма.Параметр; // TurboBL
	Журнал = КлассПерехватчикГК.Журнал;
                                          
	//Сервис.ЭмулироватьКлавиатуру("{TAB}", 1);
                           
	// иначе деструктор сработает позже, после завершения процедуры
	// а нужно, чтобы он сработал сразу же после закрытия формы
	// одна копия объекта класса хранится внутри перехватчика
	КлассПерехватчикГК = 0;
	
	Сам.ЗакрытьФорму();

	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	//Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Форма::ПослеОткрытия, КОП::ПриНажатииКнопкиКлавиатуры<9>, КОП::Событие_ПриЗакрытии, КОП::Событие_ПослеЗакрытия, КОП::Деструктор");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "Форма::ПослеОткрытия, КОП::Событие_ПриЗакрытии, КОП::Событие_ПослеЗакрытия, КОП::Деструктор");
КонецПроцедуры

Процедура Тест_ПерехватСобытийГлобальногоМодуля() Экспорт
	Сам = Сам();
                                     
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");

	КлассПерехватчикГМ = СоздатьОбъект("КлассПерехватчикГлобальногоМодуля");
	КлассПерехватчикГМ.Инициализация(Журнал);
	
	КлассПерехватчикГМ = 0; // для правильной отработки деструктора и возможности немедленной проверки

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", Журнал, ПутьКФорме);
	
	Сам.ЗакрытьФорму();
	_Перехватчик.СнятьПерехватСобытийГлобальногоМодуля();
	
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::СобытиеГМ_ВводНового, КОП::СобытиеГМ_ПриОткрытии, Форма::ПриОткрытии, Форма::ПриЗакрытии, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_ПерехватСобытийГлобальногоМодуля_ЗапретОткрытияВ_СобытиеГМ_ПриОткрытии() Экспорт
	Сам = Сам();
                                     
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");
	
	КлассПерехватчикГМ = СоздатьОбъект("КлассПерехватчикГлобальногоМодуля");
	КлассПерехватчикГМ.Инициализация(Журнал);
	
	КлассПерехватчикГМ.Флаг_СобытиеГМ_ПриОткрытии_ВозвращаемоеЗначение = 0;
	
	КлассПерехватчикГМ = 0; // для правильной отработки деструктора и возможности немедленной проверки

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК.ert"; 	
	Сам.ПроверитьИсключение(Сам, "ОткрытьФорму", "Отчет", , ПутьКФорме);

	_Перехватчик.СнятьПерехватСобытийГлобальногоМодуля();
	
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::СобытиеГМ_ВводНового, КОП::СобытиеГМ_ПриОткрытии, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_ПерехватСобытийГлобальногоМодуля_ЗапретОткрытияВ_СобытиеГМ_ВводНового() Экспорт
	Сам = Сам();
                                     
	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");
	
	КлассПерехватчикГМ = СоздатьОбъект("КлассПерехватчикГлобальногоМодуля");
	КлассПерехватчикГМ.Инициализация(Журнал);
	
	КлассПерехватчикГМ.Флаг_СобытиеГМ_ВводНового_ВозвращаемоеЗначение = 0;
	
	КлассПерехватчикГМ = 0; // для правильной отработки деструктора и возможности немедленной проверки

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК.ert"; 	
	Сам.ПроверитьИсключение(Сам, "ОткрытьФорму", "Отчет", , ПутьКФорме);

	Журнал = Журнал;
	
	_Перехватчик.СнятьПерехватСобытийГлобальногоМодуля();
	
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::СобытиеГМ_ВводНового, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_ПерехватСобытийГлобальногоМодуля_СобытияFormEx() Экспорт
	Сам = Сам();
	
	Попытка
		Сервис = СоздатьОбъект("Сервис");
	Исключение
		Сам().ПропуститьТест(0, "Не загружена ВК FormEx");
	КонецПопытки;

	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");

	КлассПерехватчикГМ = СоздатьОбъект("КлассПерехватчикГлобальногоМодуля");
	КлассПерехватчикГМ.Инициализация(Журнал);
	
	КлассПерехватчикГМ.ФлагПерехватыватьСобытияФормЕкс = 1;
	
	КлассПерехватчикГМ = 0; // для правильной отработки деструктора и возможности немедленной проверки

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", Журнал, ПутьКФорме);
	
	Сам.ЗакрытьФорму();
	_Перехватчик.СнятьПерехватСобытийГлобальногоМодуля();
	
	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::СобытиеГМ_ВводНового, КОП::СобытиеГМ_ПриОткрытии, Форма::ПриОткрытии, КОП::СобытиеГМ_ПослеОткрытия, Форма::ПриЗакрытии, КОП::СобытиеГМ_ПослеЗакрытия, КОП::Деструктор");

КонецПроцедуры

Процедура Тест_ПерехватСобытийГлобальногоМодуля_СобытияFormEx_ВызовОригинальныхСобытий() Экспорт
	Сам = Сам();
	
	Попытка
		Сервис = СоздатьОбъект("Сервис");
	Исключение
		Сам().ПропуститьТест(0, "Не загружена ВК FormEx");
	КонецПопытки;

	Журнал = СоздатьОбъект("ЖурналВызоваМетодов");

	КлассПерехватчикГМ = СоздатьОбъект("КлассПерехватчикГлобальногоМодуля");
	КлассПерехватчикГМ.Инициализация(Журнал);
	
	КлассПерехватчикГМ.ФлагПерехватыватьСобытияФормЕкс = 1;

	глУстановитьФлагОбработкиСобытийФормЕкс(Журнал);
	
	КлассПерехватчикГМ = 0; // для правильной отработки деструктора и возможности немедленной проверки

	ПутьКФорме = КаталогИБ()+"ExtForms\UnitTests\КлассПерехватчикГК.ert"; 	
	Конт = Сам.ОткрытьФорму("Отчет", Журнал, ПутьКФорме);
	
	Сам.ЗакрытьФорму();
	_Перехватчик.СнятьПерехватСобытийГлобальногоМодуля();
	
	//Сообщить("Журнал.стрЖурнал = <"+Журнал.стрЖурнал+">");
	Сам.ПроверитьРавенство(Журнал.стрЖурнал, "КОП::Инициализация, КОП::СобытиеГМ_ПриЗагрузкеВнешнегоОтчета, Глобальный::ПриЗагрузкеВнешнегоОтчета<ПерехватчикГК.ert>, КОП::СобытиеГМ_ВводНового, КОП::СобытиеГМ_ПриОткрытии, Форма::ПриОткрытии, КОП::СобытиеГМ_ПослеОткрытия, Глобальный::ПослеОткрытия, Форма::ПриЗакрытии, КОП::СобытиеГМ_ПослеЗакрытия, КОП::Деструктор");

КонецПроцедуры
