Top.Mail.Ru

Внешние наборы данных в 1С СКД

Возникал ли у вас хоть раз вопрос – как сделать отчет на 1С СКД по таблице значений? В этом нам помогут внешние наборы данных в 1С СКД.

Итак. Если вам нужно сделать отчет по данным внешней системы, если вам нужно сделать отчет по данным сложного алгоритма, которые невозможно получить запросом (пакетом запросов), то вы должны познакомиться с такими понятиями СКД как «набор данных объект» и «внешний набор данных».

Начнем с набора данных объект. Его вам нужно добавить в вашу схему компоновки

Далее вам нужно определить структуру набора. По сути это таблица значений. Поэтому вам нужно добавить колонки таблицы, задать их тип и задать имя таблицы (имя объекта, содержащего данные)

Каким образом появляются данные в указанном наборе? Это реализуется через внешние наборы данных, которые можно задать только при программном формировании отчета. Поэтому мы обращаемся к процедуре модуля объекта отчета «ПриКомпоновкеРезультата», в которой, как известно, производится программное выполнение отчета 1С на СКД.

Рассмотрим вот такой пример программного формирования:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ВнешниеНаборыДанных = Новый Структура;

    ДанныеНабора = ВнешнийНабор.Выгрузить();

    ДанныеНабора.Колонки.Добавить("КодВнешний", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(9)));

    ДанныеНабора.Колонки.Добавить("СерияВнешний", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(5)));

    ДанныеНабора.Колонки.Добавить("ДокументВнешний", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(50)));

    ДанныеНабора.Колонки.Количество.Имя = "КоличествоВнешний";

    ДанныеНабора.Колонки.Наименование.Имя = "НаименованиеВнешний";

    Для каждого Строка Из ДанныеНабора Цикл

        Строка.КодВнешний = Строка.Код;

        Строка.СерияВнешний = Строка.Серия;

        Строка.ДокументВнешний = "Накладная № " + Строка.Номер + " от " + Формат(Строка.Дата, "ДФ=dd.MM.yyyy");

    КонецЦикла;

    ВнешниеНаборыДанных.Вставить("ВнешнийНабор", ДанныеНабора);

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;

МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки);

ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;

ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки);

ДокументРезультат.Очистить();

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;

ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

ПроцессорВывода.Вывести(ПроцессорКомпоновки);

КонецПроцедуры

Здесь «ВнешнийНабор» это табличная часть отчета, которая заполняется на клиенте. Табличную часть мы выгружаем в таблицу значений, которую в свою очередь передаем в структуру, задающую состав внешних наборов – «ВнешниеНаборыДанных». В каждом элементе этой структуры свойство «Ключ» содержит имя объекта, как мы задали его в схеме данных. Свойство «Значение» содержит таблицу значений с колонками, совпадающими по именам и типам с полями набора данных.

Ключевая строчка в этом коде это

ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки);

В этой строке мы передаем внешние наборы данных в процессор компоновки для дальнейшего выполнения нашего отчета.

На этом в принципе все.

Материалы для дополнительного изучения

Набор данных Объект в СКД для решения задач сортировки, нумерации и вывода в отчет произвольных наборов данных

Смена типа набора данных СКД с сохранением полей

Автоматическая обработка для смены типа набора данных СКД с сохранением полей

Разработка отчета СКД с использованием заглушек наборов данных

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar