новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

СКД отчет с использованием двух схем компоновки.

  • Добавить свою публикацию
  • для этого требуется регистрация

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

 

Итак, начнем.

Добавляем вторую (промежуточную) схему компоновки. 

Изображение

Затем в модуле отчета необходимо обработать программно эти схемы.

Для начала укажем, что первой должна выполнится промежуточная схема «Макет».

 

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

 

 

Получив таблицу значений с результатом выполнения промежуточной схемы, можно подключить ее ко второй схеме и работать с ней как с внешней таблицей.

 

Изображение

 

 	
	ВнешниеНаборыДанных = Новый Структура;
	ВнешниеНаборыДанных.Вставить("ДанныеТЗ", ДанныеТЗ);
	
	
	
	ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;	
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, 
	КомпоновщикНастроек.Настройки, ДанныеРасшифровки);	
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных , 
	ДанныеРасшифровки, Истина);	
	ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
	ПроцессорВывода.УстановитьДокумент(ТабДокумент);

 

Вот и все, друзья. Надеюсь данная статья поможет кому-нибудь в построении сложных отчетов.

 
0
Еще от автора
≡ к списку статей