Передача набора данных типа Объект в отчет СКД

Публикация № 940563

Программирование - Практика программирования

СКД отчет

5
Пример показывает, каким образом можно передать таблицу значений в отчет СКД (в набор данных объект). Пример работает как на обычных, так и на управляемых формах.

В качестве примера предлагается следующий вариант: 

1. Берем первые 20 записей номенклатуры (код, артикул и ссылка), помещаем их в таблицу значений;

2. Из сформированной таблицы значений создаем еще 2 таблицы значений (в первую мы копируем ссылку и код, во вторую ссылку и артикул). Эти 2 таблицы будут переданы в процессор компоновки данных и соединены.

3. Выводим данные в табличный документ.

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

Тестировал на платформе версии 8.3.10.2667.

5

Скачать файлы

Наименование Файл Версия Размер
Передача набора данных типа объект в отчет СКД:
.erf 24,46Kb
11.11.18
3
.erf 24,46Kb 3 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. Поручик 4293 12.11.18 11:42 Сейчас в теме
Вроде это давно описано и разжёвано в хреновой туче постов по всем интернетам.
PLAstic; user615001_Shumeyko; lunjio; A_Max; echo77; +5 Ответить
2. echo77 1081 12.11.18 12:11 Сейчас в теме
(0) К сожалению, это не ново.
Пара моментов:

СхемаСКД = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");

- схему из макета можно не получать, если у вас отчет и свойство ОсновнаяСхемаКомпоновкиДанных заполнено, то оно доступно из контекста как СхемаКомпоновкиДанных

КомпановщикМакетаКД

Здесь описана классная процедура: https://infostart.ru/public/80164/
3. player278 21.11.18 17:55 Сейчас в теме
У меня в таком отчете (с набор данных - объект и с подсовыванием таблицы значений в ПриКомпоновкеРезультата) не крутится кружок в левом верхнем углу результата с текстом "отчет формируется ...", который в нормальном отчете работает сам по себе.

Создал форму отчета, там через ОтображениеСостояния включаю кружок, но после

СкомпоноватьРезультат(РежимКомпоновкиРезультата.ЧтоУгодно);


его снова не видно. Через ПодключитьОбработчикОжидания его включал, видно его, но только тогда, когда результат уже вывелся. Кто-нибудь сталкивался?
Оставьте свое сообщение