Приемы:
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. Отчет финансирование-поставки-затраты.