Система компоновки данных позволяет создать для отчета несколько схем компоновки данных. Средствами встроенного языка нужную схему компоновки можно получить по имени и программно выполнить отчет на ее основе (листинг 3.52).
Листинг 3.52. Программное получение схемы компоновки
СхемаКомпоновкиДанных =
Отчеты.СписокНоменклатуры.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Средствами встроенного языка можно создать и описать саму схему компоновки данных. Более подробно этот процесс описан - .
В приведенном ниже примере создается схема компоновки данных, в нее добавляется локальный источник данных информационной базы. Затем создается НаборДанныхЗапрос с именем НаборДанных1 и определяется текст запроса, получающего цены номенклатуры из виртуальной таблицы РегистрСведений.Цены.СрезПоследних (листинг 3.53).
Листинг 3.53. Процедура программной установки схемы компоновки
СКД = Новый СхемаКомпоновкиДанных;
ИД = СКД.ИсточникиДанных.Добавить();
ИД.Имя = "ИсточникДанных";
ИД.ТипИсточникаДанных = "Local";
НаборДанных = СКД.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
НаборДанных.Имя = "НаборДанных1";
НаборДанных.Запрос = " ВЫБРАТЬ ЦеныСрезПоследних.Период, "+
"ЦеныСрезПоследних.Номенклатура, ЦеныСрезПоследних.Цена "+
"ИЗ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних";
НаборДанных.ИсточникДанных = "ИсточникДанных";
Затем в набор данных добавляются поля Номенклатура, Период и Цена и задается его формат без вывода дробной части. Далее в набор данных добавляется поле ресурсов Цена и задается выражение для его расчета (листинг 3.54).
Листинг 3.54. Процедура программной установки схемы компоновки
Поле1 = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле1.Поле = "Номенклатура";
Поле1.ПутьКДанным = "Номенклатура";
Поле1.Заголовок = "Номенклатура";
Поле2 = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле2.Поле = "Период";
Поле2.ПутьКДанным = "Период";
Поле2.Заголовок = "Период";
Поле3 = НаборДанных.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле3.Поле = "Цена";
Поле3.ПутьКДанным = "Цена";
Поле3.Заголовок = "Цена";
Поле3.Оформление.УстановитьЗначениеПараметра("Формат", "ЧЦ=6; ЧДЦ=0");
ПолеРесурса = СКД.ПоляИтога.Добавить();
ПолеРесурса.ПутьКДанным = "Цена";
ПолеРесурса.Выражение = "Сумма(Цена)";
В набор данных также можно добавить вычисляемые поля, параметры и т. д. Дополнительную информацию об этих объектах системы компоновки данных можно увидеть в разделе Синтакс-Помощника: Общие объекты⇒Система компоновки данных⇒Схема компоновки данных…