//ирПортативный Перем ирПортативный Экспорт;
//ирПортативный Перем ирОбщий Экспорт;
//ирПортативный Перем ирСервер Экспорт;
//ирПортативный Перем ирКэш Экспорт;
//ирПортативный Перем ирКлиент Экспорт;

Перем РежимОтладки Экспорт;

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
	
	#Если _ Тогда
		СхемаКомпоновки = Новый СхемаКомпоновкиДанных;
		КонечнаяНастройка = Новый НастройкиКомпоновкиДанных;
		ВнешниеНаборыДанных = Новый Структура;
		ДокументРезультат = Новый ТабличныйДокумент;
	#КонецЕсли
	СтандартнаяОбработка = Ложь;
	мПлатформа = ирКэш.Получить();
	#Если Сервер И Не Сервер Тогда
		мПлатформа = Обработки.ирПлатформа.Создать();
	#КонецЕсли
	ТаблицаПодписки = Новый ТаблицаЗначений;
	ТаблицаПодписки.Колонки.Добавить("ОбъектМетаданных", Новый ОписаниеТипов("Строка"));
	ТаблицаПодписки.Колонки.Добавить("ОбъектМетаданныхПредставление", Новый ОписаниеТипов("Строка"));
	ТаблицаПодписки.Колонки.Добавить("Событие", Новый ОписаниеТипов("Строка"));
	ТаблицаПодписки.Колонки.Добавить("Подписка", Новый ОписаниеТипов("Строка"));
	ТаблицаПодписки.Колонки.Добавить("ТипОбъекта", Новый ОписаниеТипов("Строка"));
	ТаблицаПодписки.Колонки.Добавить("Обработчик", Новый ОписаниеТипов("Строка"));
	ТаблицаПодписки.Колонки.Добавить("ОбработчикИмя", Новый ОписаниеТипов("Строка"));
	ТаблицаПодписки.Колонки.Добавить("ОбработчикМодуль", Новый ОписаниеТипов("Строка"));
	ТаблицаОбщиеМодули = Новый ТаблицаЗначений;
	ТаблицаОбщиеМодули.Колонки.Добавить("Имя", Новый ОписаниеТипов("Строка"));
	ТаблицаОбщиеМодули.Колонки.Добавить("КлиентУправляемоеПриложение", Новый ОписаниеТипов("Булево"));
	ТаблицаОбщиеМодули.Колонки.Добавить("КлиентОбычноеПриложение", Новый ОписаниеТипов("Булево"));
	ТаблицаОбщиеМодули.Колонки.Добавить("Сервер", Новый ОписаниеТипов("Булево"));
	ТаблицаОбщиеМодули.Колонки.Добавить("ВнешнееСоединение", Новый ОписаниеТипов("Булево"));
	ТаблицаОбщиеМодули.Колонки.Добавить("ВызовСервера", Новый ОписаниеТипов("Булево"));
	ТаблицаОбщиеМодули.Колонки.Добавить("Привилегированный", Новый ОписаниеТипов("Булево"));
	ТаблицаОбщиеМодули.Индексы.Добавить("Имя");
	Счетчик = 1;
	Для Каждого Подписка Из Метаданные.ПодпискиНаСобытия Цикл
		#Если Сервер И Не Сервер Тогда
			Подписка = Метаданные.ПодпискиНаСобытия.ПередЗаписью1;
		#КонецЕсли
		Для Каждого ТипОбъекта Из Подписка.Источник.Типы() Цикл
			СтрокаТаблицы = ТаблицаПодписки.Добавить();
			СтрокаТаблицы.Событие = Подписка.Событие;
			СтрокаТаблицы.Обработчик = Подписка.Обработчик;
			Фрагменты = ирОбщий.СтрРазделитьЛкс(Подписка.Обработчик);
			СтрокаТаблицы.ОбработчикМодуль = Фрагменты[0];
			СтрокаТаблицы.ОбработчикИмя = Фрагменты[1];
			СтрокаТаблицы.Подписка = Подписка.Имя;
			СтруктураТипа = мПлатформа.СтруктураТипаИзКонкретногоТипа(ТипОбъекта);
			СтрокаТаблицы.ОбъектМетаданных = СтруктураТипа.Метаданные.ПолноеИмя();
			СтрокаТаблицы.ОбъектМетаданныхПредставление = СтруктураТипа.Метаданные.Представление();
			СтрокаТаблицы.ТипОбъекта = ирОбщий.ПервыйФрагментЛкс(СтруктураТипа.ИмяОбщегоТипа);
			ИмяМодуля = СтрокаТаблицы.ОбработчикМодуль;
			СтрокаМодуля = ТаблицаОбщиеМодули.Найти(ИмяМодуля, "Имя");
			Если СтрокаМодуля = Неопределено Тогда
				СтрокаМодуля = ТаблицаОбщиеМодули.Добавить();
				СтрокаМодуля.Имя = ИмяМодуля;
				МодульМД = Метаданные.ОбщиеМодули.Найти(ИмяМодуля);
				Если МодульМД = Неопределено Тогда
					Продолжить;
				КонецЕсли; 
				#Если Сервер И Не Сервер Тогда
					МодульМД = Метаданные.ОбщиеМодули.ОбщегоНазначения;
				#КонецЕсли
				СтрокаМодуля.Сервер = МодульМД.Сервер;
				СтрокаМодуля.ВызовСервера = МодульМД.ВызовСервера;
				СтрокаМодуля.Привилегированный = МодульМД.Привилегированный;
				СтрокаМодуля.ВнешнееСоединение = МодульМД.ВнешнееСоединение;
				СтрокаМодуля.КлиентОбычноеПриложение = МодульМД.КлиентОбычноеПриложение;
				СтрокаМодуля.КлиентУправляемоеПриложение = МодульМД.КлиентУправляемоеПриложение;
			КонецЕсли; 
		КонецЦикла;
		Счетчик = Счетчик + 1;
	КонецЦикла;
	ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
	События = ирОбщий.ТаблицаЗначенийИзТабличногоДокументаЛкс(ПолучитьМакет("События"));

	КонечнаяНастройка = КомпоновщикНастроек.ПолучитьНастройки();
	Если ЗначениеЗаполнено(ОбъектМетаданных) Тогда
		ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(КонечнаяНастройка, "ОбъектМетаданных", ОбъектМетаданных,,, Ложь);
	КонецЕсли; 
	Если ЗначениеЗаполнено(Событие) Тогда
		ирОбщий.НайтиДобавитьЭлементОтбораКомпоновкиЛкс(КонечнаяНастройка, "Событие", Событие,,, Ложь);
	КонецЕсли; 
	ВнешниеНаборыДанных = Новый Структура("Таблица, События, ОбщиеМодули", ТаблицаПодписки, События, ТаблицаОбщиеМодули);
	Если РежимОтладки = 2 Тогда
		ирОбщий.ОтладитьЛкс(СхемаКомпоновкиДанных, , КонечнаяНастройка, ВнешниеНаборыДанных);
		Возврат;
	КонецЕсли; 
	ДокументРезультат.Очистить();
	ирОбщий.СкомпоноватьВТабличныйДокументЛкс(СхемаКомпоновкиДанных, КонечнаяНастройка, ДокументРезультат, ВнешниеНаборыДанных, ДанныеРасшифровки);
	
КонецПроцедуры

//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
//ирПортативный #Если Клиент Тогда
//ирПортативный 	Контейнер = Новый Структура();
//ирПортативный 	Оповестить("ирПолучитьБазовуюФорму", Контейнер);
//ирПортативный 	Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
//ирПортативный 		ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
//ирПортативный 		ирПортативный.Открыть();
//ирПортативный 	КонецЕсли; 
//ирПортативный #Иначе
//ирПортативный 	ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
//ирПортативный #КонецЕсли
//ирПортативный ирОбщий = ирПортативный.ОбщийМодульЛкс("ирОбщий");
//ирПортативный ирКэш = ирПортативный.ОбщийМодульЛкс("ирКэш");
//ирПортативный ирСервер = ирПортативный.ОбщийМодульЛкс("ирСервер");
//ирПортативный ирКлиент = ирПортативный.ОбщийМодульЛкс("ирКлиент");

РежимОтладки = 0;