// тесты работы через контекст и через наследника группового контекста

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

Функция _ОткрытьФорму(НаименованиеИлиПутьФормы)
	Перем Конт;
	Конт = 0;        
	Если ФС.СуществуетФайл(НаименованиеИлиПутьФормы) = 0 Тогда
		// обязательно в новом окне, иначе данные по тестам пересекутся и тесты поломаются :(
		Сам().ОткрытьФорму("#"+НаименованиеИлиПутьФормы, Конт);
	Иначе
		// обязательно в новом окне, иначе данные по тестам пересекутся и тесты поломаются :(
//Предупреждение("1");	
		Сам().ОткрытьФорму("Отчет#", Конт, НаименованиеИлиПутьФормы);
//Предупреждение("2");	
	КонецЕсли;
//Предупреждение("3");	
	Сам().ПроверитьНеравенство(ТипЗначения(Сам().КонтекстФормы), 0);
	Сам().ПроверитьРавенство(ТипЗначенияСтр(Сам().КонтекстФормы), "ГрупповойКонтекст");
	
	Возврат Сам().КонтекстФормы;
КонецФункции	//  

//Процедура Тест_ФормаГрупповогоКонтекста() Экспорт
//	ПутьКФорме = КаталогИБ()+"ExtForms\ФормаПроверкиГрупповогоКонтекста.ert"; 
//	Конт = _ОткрытьФорму(ПутьКФорме);
//	
//	Конт.МетодФормыИМодуля();
//
//	Сам().ПроверитьРавенство(Конт.ПеремФормыИМодуля, "ГК::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(Конт.ПеремФормы, "ГК::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(Конт.ПриватПеремФормы, "ГК::МетодФормыИМодуля");
//
//КонецПроцедуры	// 
//
//Процедура Тест_ФормаГрупповогоКонтекста_ПриватМетод() Экспорт
//	ПутьКФорме = КаталогИБ()+"ExtForms\ФормаПроверкиГрупповогоКонтекста.ert"; 
//	Конт = _ОткрытьФорму(ПутьКФорме);
//	
//	Конт.ПриватМетодФормы();
//
//	Сам().ПроверитьРавенство(Конт.ПеремФормыИМодуля, "ГК::ПриватМетодФормы");
//	Сам().ПроверитьРавенство(Конт.ПеремФормы, "ГК::ПриватМетодФормы");
//	Сам().ПроверитьРавенство(Конт.ПриватПеремФормы, "ГК::ПриватМетодФормы");
//
//КонецПроцедуры	// 
//
//Процедура Тест_НаследникГрупповогоКонтекста() Экспорт
//	ПутьКФорме = КаталогИБ()+"ExtForms\ФормаПроверкиГрупповогоКонтекста.ert"; 
//	Конт = _ОткрытьФорму(ПутьКФорме);
//	
//	НаследникГК = СоздатьОбъект("НаследникГрупповойКонтекст");
//	НаследникГК.Инициализация(Конт);
//
//	НаследникГК.МетодФормыИМодуля();
//
//	Сам().ПроверитьРавенство(Конт.ПеремФормыИМодуля, "ГК");
//	Сам().ПроверитьРавенство(Конт.ПеремФормы, "ГК");
//	Сам().ПроверитьРавенство(Конт.ПриватПеремФормы, "КОП::МетодФормыИМодуля");
//
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормыИМодуля, "КОП::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремМодуля, "КОП::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормы, "ГК");
//	Сам().ПроверитьРавенство(НаследникГК.ПриватПеремФормы, "КОП::МетодФормыИМодуля");
//
//КонецПроцедуры	// 
//
//Процедура Тест_НаследникГрупповогоКонтекста_ОбращениеКФормеЧерезЕЕКонтекст() Экспорт
//	ПутьКФорме = КаталогИБ()+"ExtForms\ФормаПроверкиГрупповогоКонтекста.ert"; 
//	Конт = _ОткрытьФорму(ПутьКФорме);
//	
//	НаследникГК = СоздатьОбъект("НаследникГрупповойКонтекст");
//	НаследникГК.Инициализация(Конт);
//
//	Конт.МетодФормыИМодуля();
//
//	Сам().ПроверитьРавенство(Конт.ПеремФормыИМодуля, "ГК::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(Конт.ПеремФормы, "ГК::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(Конт.ПриватПеремФормы, "ГК::МетодФормыИМодуля");
//
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормыИМодуля, "КОП");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормы, "ГК::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремМодуля, "КОП");
//	Сам().ПроверитьРавенство(НаследникГК.ПриватПеремФормы, "ГК::МетодФормыИМодуля");
//
//КонецПроцедуры	// 
//
//Процедура Тест_НаследникГрупповогоКонтекста_ПриватМетод() Экспорт
//	ПутьКФорме = КаталогИБ()+"ExtForms\ФормаПроверкиГрупповогоКонтекста.ert"; 
//	Конт = _ОткрытьФорму(ПутьКФорме);
//	
//	НаследникГК = СоздатьОбъект("НаследникГрупповойКонтекст");
//	НаследникГК.Инициализация(Конт);
//	
//	НаследникГК.ПриватМетодФормы();
//
//	Сам().ПроверитьРавенство(Конт.ПеремФормыИМодуля, "ГК::ПриватМетодФормы");
//	Сам().ПроверитьРавенство(Конт.ПеремФормы, "ГК::ПриватМетодФормы");
//	Сам().ПроверитьРавенство(Конт.ПриватПеремФормы, "ГК::ПриватМетодФормы");
//
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормыИМодуля, "КОП");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремМодуля, "КОП");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормы, "ГК::ПриватМетодФормы");
//	Сам().ПроверитьРавенство(НаследникГК.ПриватПеремФормы, "ГК::ПриватМетодФормы");
//
//КонецПроцедуры	// 
//
//Процедура Тест_НаследникГрупповогоКонтекста_ПриватМетод_ОбращениеКФормеЧерезЕЕКонтекст() Экспорт
//	ПутьКФорме = КаталогИБ()+"ExtForms\ФормаПроверкиГрупповогоКонтекста.ert"; 
//	Конт = _ОткрытьФорму(ПутьКФорме);
//	
//	НаследникГК = СоздатьОбъект("НаследникГрупповойКонтекст");
//	НаследникГК.Инициализация(Конт);
//	
//	Конт.ПриватМетодФормы();
//
//	Сам().ПроверитьРавенство(Конт.ПеремФормыИМодуля, "ГК::ПриватМетодФормы");
//	Сам().ПроверитьРавенство(Конт.ПеремФормы, "ГК::ПриватМетодФормы");
//	Сам().ПроверитьРавенство(Конт.ПриватПеремФормы, "ГК::ПриватМетодФормы");
//
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормыИМодуля, "КОП");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремМодуля, "КОП");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормы, "ГК::ПриватМетодФормы");
//	Сам().ПроверитьРавенство(НаследникГК.ПриватПеремФормы, "ГК::ПриватМетодФормы");
//
//КонецПроцедуры	// 
//

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

	НаследникГК.МетодФормыИМодуля();
//
//	Сам().ПроверитьРавенство(Конт.ПеремФормыИМодуля, "ГК");
//	Сам().ПроверитьРавенство(Конт.ПеремФормы, "ГК");
//	Сам().ПроверитьРавенство(Конт.ПриватПеремФормы, "КОП::МетодФормыИМодуля");
//
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормыИМодуля, "КОП::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремМодуля, "КОП::МетодФормыИМодуля");
//	Сам().ПроверитьРавенство(НаследникГК.ПеремФормы, "ГК");
//	Сам().ПроверитьРавенство(НаследникГК.ПриватПеремФормы, "КОП::МетодФормыИМодуля");

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