Набор данных 1с используется для работы с различными вариантами объектов системы 1с .
Типы наборов данных СКД
Рассмотрим, какие типы наборов данных можно создать в схеме компоновки данных:
- Набор данных запрос – произвольный запрос к базе данных (самый распространенный вариант),
- Набор данных объект – произвольный, внешний набор данных (например таблица значений),
- Набор данных объединение – объединение нескольких наборов данных в один результирующий.
Использование набора данных – запрос 1с
Запрос 1с позволяет выбрать данные из БД.
Набор данных – объединение
Набор данных – объединение предназначен для разработки отчета, содержащего объединенную информацию из различных наборов данных. Такой набор содержит два или более подчиненных набора данных, но информация в них не связывается, а объединяется.
Может быть построена разветвленная структура объединений наборов данных. Отдельные наборы можно перетаскивать мышкой по структуре.
Существует ограничение: подчиненные наборы могут быть только у наборов данных объединение.
Набор данных -объект 1с
Создавая набор данных этого типа, необходимо описать только выходные поля этого набора и его наименование:
Сам механизм для формирования данных необходимо описывать программно, и передавать процессору компоновки. Такие внешние данные могут быть следующих видов:
- Таблица значений,
- Выборка из результата запроса,
- Область ячеек табличного документа,
- Набор записей регистров,
- Любой объект конфигурации или его табличная часть.
Наиболее распространенный тип внешних данных – это таблица значений. Ниже пример программного кода для передачи внешних данных процессору компоновки:
ТЗ = новый ТаблицаЗначений;
…
ВнешниеНаборы = новый Структура;
ВнешниеНаборы.Вставить("ИмяНабораДанных", ТЗ);
ПроцессорКомпоновки = новый ПроцессорКомпоновкиДанных();
ПроцессорКомпановки.Инициализировать(МакетКомпоновки, ВнешниеНаборы);
В качестве объекта часто используют таблицу значений.
Пример использования набора данных объект.
Подготовим набор данных объект. Отчет будет содержать указанные поля. Имя Объекта будет использоваться в дальнейшем для связи с внешним набором данных.
Во-первых создаем Макет с использованием Компоновщика Макета.
//Шаг 1
Настройки=КомпоновщикНастроек.Настройки;
КомпоновщикМакета=Новый КомпоновщикМакетаКомпоновкиДанных;
Макет=КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,Настройки);
Во-вторых назначаем процессор компоновки. Процессор компоновки в качестве аргументов получаем Макет(Макет компоновки) и Внешний набор. Внешний набор можно получить из внешних данных запросом или создать самостоятельно с использованием таблицы значений.
//Шаг 2 Определяем Процессор Компоновки
ПроцессорКомпановки=Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпановки.Инициализировать(Макет, ВнешнийНабор);
Внешний набор можно получить запросом к табличной части документа:
Запрос=новый запрос;
Запрос.Текст="ВЫБРАТЬ
| ПриходнаяНакладнаяСписокНоменклатуры.Номенклатура КАК Номенклатура,
| ПриходнаяНакладнаяСписокНоменклатуры.Количество КАК Количество,
| ПриходнаяНакладнаяСписокНоменклатуры.Цена КАК Цена,
| ПриходнаяНакладнаяСписокНоменклатуры.Сумма КАК Сумма
|ИЗ
| Документ.ПриходнаяНакладная.СписокНоменклатуры КАК ПриходнаяНакладнаяСписокНоменклатуры";
ТаблицаНоменклатуры=Запрос.Выполнить();
ВнешнийНабор=новый Структура("ТаблицаТовары",ТаблицаНоменклатуры);
В-третьих выводим данные в Документ Результат с помощью ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.
//Шаг3 Процессор вывода
ПроцессорВывода=Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпановки);