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