// КлассПерехватчикГлобальногоМодуля
Перем Журнал Экспорт;
Перем _Перехватчик;

Перем Флаг_СобытиеГМ_ПриОткрытии_ВозвращаемоеЗначение Экспорт;
Перем Флаг_СобытиеГМ_ВводНового_ВозвращаемоеЗначение Экспорт;

Перем ФлагПерехватыватьСобытияФормЕкс Экспорт;
Перем Флаг_СобытиеГМ_СобытиеГМ_ПослеОткрытия_ВозвращаемоеЗначение Экспорт;

Функция Конт(Конт) Возврат Конт; КонецФункции // : Контекст
Функция Сам() Возврат Конт(Контекст); КонецФункции // : Контекст

Процедура Инициализация(Журнал1) Экспорт
	Журнал = Журнал1;
	Журнал.ДобавитьЗапись("КОП::Инициализация");

	Флаг_СобытиеГМ_ПриОткрытии_ВозвращаемоеЗначение = 1;
	Флаг_СобытиеГМ_ВводНового_ВозвращаемоеЗначение = 1;
	
	ФлагПерехватыватьСобытияФормЕкс = 0;
	Флаг_СобытиеГМ_СобытиеГМ_ПослеОткрытия_ВозвращаемоеЗначение = 1;

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

Процедура Деструктор()
	//Сообщить("КОП::Деструктор");
	Журнал.ДобавитьЗапись("КОП::Деструктор");
КонецПроцедуры	// Деструктор

Функция СобытиеГМ_ПриОткрытии() Экспорт
	Журнал.ДобавитьЗапись("КОП::СобытиеГМ_ПриОткрытии");
	
	Возврат Флаг_СобытиеГМ_ПриОткрытии_ВозвращаемоеЗначение;
КонецФункции

Функция СобытиеГМ_ВводНового() Экспорт
	Журнал.ДобавитьЗапись("КОП::СобытиеГМ_ВводНового");
	
	Возврат Флаг_СобытиеГМ_ВводНового_ВозвращаемоеЗначение;
КонецФункции

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

	_Перехватчик.ВыполнитьОригинальноеСобытиеГлобальногоМодуля("ПослеОткрытия", Конт);
	
	Возврат Флаг_СобытиеГМ_СобытиеГМ_ПослеОткрытия_ВозвращаемоеЗначение;
КонецФункции

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

	Журнал.ДобавитьЗапись("КОП::СобытиеГМ_ПослеЗакрытия");
                                                                                
	// ! специально с ошибкой - не передавая контекст формы !
	_Перехватчик.ВыполнитьОригинальноеСобытиеГлобальногоМодуля("ПослеЗакрытия");
	
	Возврат 1;
КонецФункции

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

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