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

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

Комментарии

  • pavlo 18.09.2018 13:59
    У меня по второму варианту не получилось. При такой настройке появилась колонка построчно со словами названия колонки ресурса.

    Подробнее...

     
  • Altavista- 17.09.2018 20:51
    Не бесспорное решение: 1. В регистр логичнее добавить 2й ресурс ("вТрансфертныхЦенах"); 2. РС "Наценки"? Однозначно, нет. Это реквизит справочника; 3. Реквизита "Контрагент" в условии задачи тоже нет и ...

    Подробнее...

     
  • Андрей 02.08.2018 09:55
    Большое спасибо! По "Варианту 2": в выбранных полях группировки колонок (у меня их несколько) кроме поля самой колонки пришлось добавить и ресурс.

    Подробнее...