gifts2017

Опыт работы с Универсальным отчетом для УПП 1.3

Опубликовал Игорь Кащеев (IgorXml) в раздел Программирование - Практика программирования

Хочу поделиться примерами работы  с Универсальным отчетом для Управление производственным предприятием, редакция 1.3.31.1.

Приемы:

1. Широко используются различные методы "УниверсальныйОтчет" и "УниверсальныйОтчетПоМетаданным", которые используются большинством отчетов УПП 1.3.

 	 ... 
Форма_Отчет = Отчеты.УниверсальныйОтчетПоМетаданным.ПолучитьФорму();
Объект_Отчет =  Форма_Отчет.ОтчетОбъект;
Форма_Отчет.РасширеннаяНастройка = Ложь;
Форма_Отчет.ЭтоОтработкаРасшифровки  = Истина;
...

2. Каждый отчет собирается из ДЗ и ТЗ, которые являются результатом типовых и не типовых, внешних, отчетов на СКД.  

	 ... 
ДеревоРезультатов = УниверсальныйОтчет.ПостроительОтчета.Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
УниверсальныйОтчет.УстановитьПредставленияПолей(УниверсальныйОтчет.мСтруктураПредставлениеПолей, УниверсальныйОтчет.ПостроительОтчета);
УдалитьОтборПериодичность_Локальный(УниверсальныйОтчет, ОтборПериодичность);
...
Результат_Продажи = Получить_Результат_Продажи(); //дз
Результат_ВедомостьПоТоварам_19 = Получить_Результат_ВедомостьПоТоварам(Ложь); //дз
Результат_ВедомостьПоТоварам_20 = Получить_Результат_ВедомостьПоТоварам(Истина); // дз
ТЗ_Дополнительные_Договора = ТЗ_Дополнительные_Договора(); // тз
Подготовить_ДЗ(ДеревоРезультатов,  Результат_Продажи, Результат_ВедомостьПоТоварам_19, Результат_ВедомостьПоТоварам_20, ТЗ_Дополнительные_Договора); // сложение ДЗ и ТЗ
ТабличныйДокумент.Очистить();
Из_Макета_IgorXml(ТабличныйДокумент); // Вывод через макет...

Из СКД:

	 ...
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Форма_1.ОтчетОбъект.СхемаКомпоновкиДанных, Форма_1.ОтчетОбъект.КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , , Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений_Затраты_IgorXml);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
...


3. Для всех запросов применяются единые отборы и настройки.

	 // сохранить измерения
Список_Измерения  = Новый СписокЗначений;
Для каждого Стр_Измерения Из УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки  Цикл
    Список_Измерения.Добавить(Стр_Измерения);
КонецЦикла; 
// сохранить отбор
Список_Отборы = Новый СписокЗначений;
Для каждого Стр_Отборы Из УниверсальныйОтчет.ПостроительОтчета.Отбор  Цикл
    Список_Отборы.Добавить(Стр_Отборы);
КонецЦикла;

4. Во многих случаях делается расшифровка.

 	 ...
ТабличныйДокумент.Вывести(Область,1,"Группа",Истина);
Для каждого СтрокаУровень_1 Из ДеревоРезультатов.Строки  Цикл
    Для каждого Стр_ПроектРодитель Из СтрокаУровень_1.Строки  Цикл
        Область_ПроектРодитель = Макет.ПолучитьОбласть("СтрокаПроектРодитель");
        ЗаполнитьЗначенияСвойств(Область_ПроектРодитель.Параметры,Стр_ПроектРодитель );
        Расшифровка_6  = Новый Структура;
        Расшифровка_6.Вставить("ПроектРодитель", Стр_ПроектРодитель.ДоговорКонтрагентаОсновнойПроектРодитель);
        Расшифровка_6.Вставить("НомерЗапроса", 6);
        Область_ПроектРодитель.Параметры.Расшифровка_6 =  Расшифровка_6;
...


5. Работают свойства и категории объектов. 

 	     ...
    // Добавление дополнительных полей
    // Необходимо вызывать для каждого добавляемого дополнительного поля.
    // УниверсальныйОтчет.ДобавитьДополнительноеПоле(, , );
    //***00X***IgorXml***04.07.2014 10:59:05***(        
    //УниверсальныйОтчет.ДобавитьДополнительноеПоле("ВалютаВзаиморасчетов");    
    // Сумма - св-во договор
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("ДоговорКонтрагентаСвойство693d68a6f4ce11e1be4f782bcb70dca2Значение",ТипРазмещенияРеквизитовИзмерений.Отдельно , 3);
    // Номер смет - св-во договора
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("ДоговорКонтрагентаСвойство1885578effa011e3800b782bcb70dca2Значение",ТипРазмещенияРеквизитовИзмерений.Отдельно , 3);
    // Передан на хранение - св-во договора
    УниверсальныйОтчет.ДобавитьДополнительноеПоле("ДоговорКонтрагентаСвойство7dacacce443911e29165782bcb70dca2Значение",ТипРазмещенияРеквизитовИзмерений.Отдельно , 3);
    //***)        
КонецПроцедуры // УстановитьНачальныеНастройки()


Список отчетов:
1. Карточка подрядчика.
2. Отчет финансирование-поставки-затраты.

Скачать файлы

Наименование Файл Версия Размер
ФинОтчеты.zip 10
.zip 90,31Kb
12.09.14
10
.zip 90,31Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. John Smith (PiccaHut001) 22.09.14 18:43
Допишите статью, пока не понятно откуда что берётся и зачем оно надо.
Вызов
Из_Макета_IgorXml(ТабличныйДокумент); // Вывод через макет...
вообще убил, к чему он? Какой-то сон разума.
2. Игорь Кащеев (IgorXml) 22.09.14 19:40
(1) PiccaHut001, Есть случаи, когда одним запросом трудно собрать все нужные данные. Я ещё беру из СКД-шных отчетов. Собираю в разные таблицы значений и ДЗ. Потом это надо вывести. Лучше в свой макет. Да ещё с расшифровками. Только своим Макетом и можно.
3. Евгений Дегтярев (DEG156) 26.09.14 11:28
Автор молодец. Как пример - возьму на заметку.