|
Создание отчета в СКД с использованием данных из таблицы значений
|
Порой случается, что данные в отчете нельзя получить при помощи запроса или
комбинации запросов. Приходится пользоваться какими-то процедурами для сбора
данных, а данные помещаются в таблицу значений. Возникает вопрос - можно ли эти
данные использовать в схеме компоновки данных? Ведь СКД инструмент мощный и
удобный. Оказывается, что использовать данные из таблицы значений в качестве
источника данных для отчета в СКД можно и сделать это совсем не сложно. В этой
статье будет показано создание такого отчета для обычных форм.
Итак, как создать отчет СКД с использованием данных из таблицы значений? Обо
всем по порядку.
Первым делом открываем конфигуратор и создаем новый внешний отчет.
Открываем модуль объекта и создаем предопределенную процедуру
ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки,
СтандартнаяОбработка)

Внутри этой процедуры будем собирать данные и формировать отчет.
В процедуре ПриКомпоновкеРезультата отключаем стандартную обработку.
СтандартнаяОбработка = Ложь;
Затем формируем таблицу значений произвольным образом. Имена
колонок таблицы значений должны совпадать с будущими полями набора данных в
СКД.:

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

Добавляем ресурсы, если это необходимо. По ним будут считаться итоги. В нашем
случае это поля Количество и Сумма.
В закладке Настройки с помощью конструктора настроек формируем вариант отчета по
умолчанию

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