RDT1C/Reports/ирАнализМетаданных/Ext/ObjectModule.bsl
Администратор bf8497473c .
2020-12-28 01:52:57 +03:00

113 lines
8.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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