Внешние наборы данных в 1С СКД
Возникал ли у вас хоть раз вопрос – как сделать отчет на 1С СКД по таблице значений? В этом нам помогут внешние наборы данных в 1С СКД.
Итак. Если вам нужно сделать отчет по данным внешней системы, если вам нужно сделать отчет по данным сложного алгоритма, которые невозможно получить запросом (пакетом запросов), то вы должны познакомиться с такими понятиями СКД как «набор данных объект» и «внешний набор данных».
Начнем с набора данных объект. Его вам нужно добавить в вашу схему компоновки
Далее вам нужно определить структуру набора. По сути это таблица значений. Поэтому вам нужно добавить колонки таблицы, задать их тип и задать имя таблицы (имя объекта, содержащего данные)
Каким образом появляются данные в указанном наборе? Это реализуется через внешние наборы данных, которые можно задать только при программном формировании отчета. Поэтому мы обращаемся к процедуре модуля объекта отчета «ПриКомпоновкеРезультата», в которой, как известно, производится программное выполнение отчета 1С на СКД.
Рассмотрим вот такой пример программного формирования:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ВнешниеНаборыДанных = Новый Структура; ДанныеНабора = ВнешнийНабор.Выгрузить(); ДанныеНабора.Колонки.Добавить("КодВнешний", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(9))); ДанныеНабора.Колонки.Добавить("СерияВнешний", Новый ОписаниеТипов("Число",,,Новый КвалификаторыЧисла(5))); ДанныеНабора.Колонки.Добавить("ДокументВнешний", Новый ОписаниеТипов("Строка",,,, Новый КвалификаторыСтроки(50))); ДанныеНабора.Колонки.Количество.Имя = "КоличествоВнешний"; ДанныеНабора.Колонки.Наименование.Имя = "НаименованиеВнешний"; Для каждого Строка Из ДанныеНабора Цикл Строка.КодВнешний = Строка.Код; Строка.СерияВнешний = Строка.Серия; Строка.ДокументВнешний = "Накладная № " + Строка.Номер + " от " + Формат(Строка.Дата, "ДФ=dd.MM.yyyy"); КонецЦикла; ВнешниеНаборыДанных.Вставить("ВнешнийНабор", ДанныеНабора); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки); ДокументРезультат.Очистить(); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры
Здесь «ВнешнийНабор» это табличная часть отчета, которая заполняется на клиенте. Табличную часть мы выгружаем в таблицу значений, которую в свою очередь передаем в структуру, задающую состав внешних наборов – «ВнешниеНаборыДанных». В каждом элементе этой структуры свойство «Ключ» содержит имя объекта, как мы задали его в схеме данных. Свойство «Значение» содержит таблицу значений с колонками, совпадающими по именам и типам с полями набора данных.
Ключевая строчка в этом коде это
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных,ДанныеРасшифровки);
В этой строке мы передаем внешние наборы данных в процессор компоновки для дальнейшего выполнения нашего отчета.
На этом в принципе все.
Материалы для дополнительного изучения
Смена типа набора данных СКД с сохранением полей
Автоматическая обработка для смены типа набора данных СКД с сохранением полей
Разработка отчета СКД с использованием заглушек наборов данных
Comments
So empty here ... leave a comment!