Для использования в отчёте на СКД произвольной таблицы значений необходимо настроить соответствующим образом схему компоновки данных и прописать программный вывод отчёта.
1. Настройка схемы компоновки данных.
1.1. Создаём основную схему компоновки данных.
1.2. На закладке "Наборы данных" добавляем набор данных - объект.
1.3. Добавляем необходимые поля набора данных (достаточно указать Поле) и указываем Имя объекта, содержащего данные.
1.4. Если в СКД есть другие наборы данных (например, Запрос), то создаём связи наборов данных на закладке "Связи наборов данных".
1.5. Настраиваем вывод отчёта нужным образом.
2. Программный вывод отчёта.
2.1. В модуле объекта отчёта создаём процедуру-обработчик ПриКомпоновкеРезультата.
2.2. В процедуре ПриКомпоновкеРезультата отключаем стандартную обработку.
СтандартнаяОбработка = Ложь;
2.3. Формируем таблицу значений произвольным образом. Имена колонок таблицы значений должны совпадать с полями набора данных в СКД (п.1.3).
тзСвойстваКонтрагентов = Новый ТаблицаЗначений; тзСвойстваКонтрагентов.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты")); тзСвойстваКонтрагентов.Колонки.Добавить("Свойство", Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(100, ДопустимаяДлина.Переменная)));
2.4. Получаем схему компоновки данных из макета.
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
2.5. Из схемы получаем настройки по умолчанию.
Настройки = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
2.6. Помещаем данные о расшифровке в соответствующую переменную.
ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
2.7. Формируем макет с помощью компоновщика макета.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных
2.8. Передаём в макет компоновки схему, настройки и данные расшифровки.
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
2.9. Выполняем компоновку с помощью процессора компоновки. Для этого выполняем метод процессора компоновки данных Инициализировать(). В качестве параметров передаём макет компоновки данных, внешние наборы данных (тип: Структура, ключ структуры должен совпадать с именем объекта в схеме компоновки данных (п.1.3), значение - сформированная таблица значений), данные расшифровки.
ВнешнийНаборДанных = Новый Структура("СвойстваКонтрагентов", тзСвойстваКонтрагентов); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
2.10. Очищаем поле табличного документа.
ДокументРезультат.Очистить();
2.11. Выводим результат в табличный документ.
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Помимо таблиц значений в качестве внешних наборов данных могут использоваться результаты запросов, табличные части.
Пример сформированного отчёта:
Справочная информация из синтакс-помощника:
ПроцессорКомпоновкиДанных (DataCompositionProcessor)
Инициализировать (Initialize)
Синтаксис:
Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>)
Параметры:
<Макет> (обязательный)
Тип: МакетКомпоновкиДанных.
Макет, для которого будет выполняться компоновка.
<ВнешниеНаборыДанных> (необязательный)
Тип: Структура.
Ключ структуры соответствует имени внешнего набора данных. Значение структуры - внешнему набору данных.
<ДанныеРасшифровки> (необязательный)
Тип: ДанныеРасшифровкиКомпоновкиДанных.
Объект, в котором нужно заполнить данные расшифровки. Если не указан, то расшифровка заполняться не будет.
<ВозможностьИспользованияВнешнихФункций> (необязательный)
Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь.
Описание:
Инициализировать объект.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Источник: novichok1c.ru