Схема компоновки данных (1С СКД)
Схема компоновки данных (1С СКД) – удобный конструктор для создания в программных продуктах 1С:Предприятие сложных отчетов, способствующих развитию и отслеживанию автоматизации производства, позволяющих сделать их максимально гибкими и красивыми за минимум времени. Дополнительный плюс Схемы компоновки данных (1С СКД) - автоматическое формирование управляемой формы отчета, а при дальнейшем развитии данного направления, является важным фактором при выборе метода разработки отчета. Но из-за сложности структуры Схемы компоновки данных (1С СКД) и огромного количества настроек зачастую приводит к более длительной разработке отчета, чем через «конструктор выходной формы». Поэтому программисту 1С необходимо разбираться во всех тонкостях работы Схемы компоновки данных (1С СКД), чтобы в дальнейшем ускорить время разработки формирования отчетов.
Разберем первые три вкладки Схемы компоновки данных (1С СКД) – набор данных, связи набора данных и вычисляемые поля.
Набор данных в 1С СКД
Набор данных включает в себя возможность создания трёх объектов – запрос, объект и объединение, остановимся подробнее на каждом из них:
Запрос
Представляет собой обычный запрос, который формируется по кнопке Конструктор запроса. Если установлен флаг Автозаполнение, то все выбранные реквизиты автоматически попадут в поля набора данных. Так же есть возможность самим настроить заполнение полей в запросе на вкладке Компоновка данных, где находятся три вкладки:
- таблицы, здесь выбираются таблицы, которые будут участвовать при формировании отчета, обычно выбираются данные по умолчанию, так как на вкладке Таблицы и поля мы уже выбрали нужные нам документы, справочники, регистры…
- поля, здесь мы выбираем те объекты, которые должны попасть в отчет, флаг дочерние указывает, будут ли доступные дочерние элементы по объекту или нет, логично, что у строковых, числовых и подобных данных нельзя будет установить флаг в положение Истина.
- условия, здесь мы выбираем те объекты, которые можно будет использовать в условиях в СКД.
Объект
Часть работы выполняется в схеме компоновки данных, часть программно, рассмотрим на простом примере:
Сначала создадим макет схема компоновки данных у документа и назовем СКД (например: 1С СКД), в нем создаем набор данных объект, далее заполняем поля, к примеру, имеем у документа табличную часть товары с реквизитами – номенклатура, количество и цена.
Добавим три поля и заполняем по каждому колонку поле наименованием реквизитов, остальные колонки заполнятся автоматически:
Далее заполним Имя объекта, содержащее данные, к примеру, ТоварыСКД и приступаем к программной части:
Создадим кнопку на форме документа, опишем механизм работы в управляемых формах:
&НаКлиенте
Процедура Печать()
НашОтчет = ПечатьНаСервере(); //вызываем функцию на сервере
НашОтчет.Показать(); //выводим сформированный отчет
КонецПроцедуры
&НаСервере
Функция ПечатьНаСервере()
ОбъектДокумента = РеквизитФормыВЗначение(“Объект”);
//помещаем табличную часть Товары в структуру с наименованием ТоварыСКД так же, как мы указали в самой СКД имя объекта, содержащего данные
НаборДанных = Новый Структура;
НаборДанных.Вставить(“ТоварыСКД”, ОбъектДокумента.Товары);
//получаем наш макет и выставляем настройки по умолчанию, чтобы все настройки вывода отчета брались из нашего макета
НашМакет = ОбъектДокумента.ПолучитьМакет(“СКД”);
Настройки = НашМакет.НастройкиПоУмолчанию;
//создаем макет компоновки данных с нашими настройками
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(НашМакет, Настройки);
//выполняем компоновку данных с нашим набором данных
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, НаборДанных);
//формируем табличный документ и выводим в него наш отчет
ДокументОтчета = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументОтчета);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Возврат ДокументОтчета;
КонецФункции
При желании можно получить области и любого другого макета и так же вывести в данном отчете, к примеру, имеем типовой макет формирования платежки и в нем очень хорошо создана шапка, тогда, чтобы нам не делать лишнюю работу, просто сначала получим макет, выведем шапку, потом сформируем и выведем наш отчет на СКД.
Объединение
В него мы можем помещать наш запросы и объекты, но в отличие от связи, он просто прибавляет таблицы друг к другу, то есть если мы свяжем две одинаковых таблицы, то получим в итоге одну, а при объединении, она удвоится, рассмотрим на простом примере:
Имеем таблицы:
При связи мы получим:
А при объединении:
Рассмотрим теперь заполнение колонок в наборах данных (некоторые пропустим, так как связаны с другими вкладками, к ним вернемся в будущих статьях):
- поле, указываем общее название реквизита;
- путь, указываем название реквизита, по которому будем к нему обращаться в СКД, к примеру, в Вычисляемых полях;
- заголовок, указываем наименование реквизита, которое будет выводится в отчете;
- ограничение поля, указываем доступность данного реквизита;
- ограничение реквизитов, указываем доступность дочерних элементов, важно, если указана доступность реквизитов, то и само поле будет доступно, возможно в будущих релизах изменят данную механику;
- выражение, по которому вычисляется представление поле, удобно использовать, когда нам нужно изменить немного вывод реквизитов, к примеру, нам нужно, чтобы после имени номенклатуры выводился склад, на котором находится она, тогда заполним следующее: Номенклатура + “ находится на складе ” + Склад. Повторюсь, что обращение реквизитам осуществляется через название, указанное в колонке путь;
- выражение упорядочивание, удобный механизм настройки упорядочивания отчета, где условие можно задать вручную, аналогично предыдущему пункту, но как показывает практика, часто этот механизм работает не так, как хотелось бы, и советую пользоваться стандартной сортировкой;
- тип значения, указывается тип значения реквизита, заполнять необходимо, если будете пользоваться следующим полем;
- доступные значения, работает лишь при заполненном типе значения, открываем форму заполнения и в колонке Значение указываем элемент, который нужно изменить, согласно типу, это может быть предопределенные объекты или у числовых, к примеру, реквизитов простые значения, в представлении указываем, на что нам нужно поменять, пример булевского типа:
- оформление – стандартная настройка формата поля, аналогичная настройке в управляемых формах, позволяет более точно и красиво настроить вывод определенного реквизита.
Связи набора данных в 1С СКД
Здесь устанавливается только левое соединение, по принципу, аналогичному связей в запросах, в источнике связи указываем основную таблицу для соединения, в приемнике дополнительную. В выражение источник и выражение приемник указываем реквизиты, по которым будет происходить связь. Остальные колонки рассмотрим подробнее, когда будем разбирать вкладку Параметры. Если нет дополнительной связью с параметрами, то рекомендуется связь делать в запросе, это ускорит работу отчета.
Вычисляемые поля в 1С СКД
Здесь полностью аналогичный механизм с ручным заполнением составом набора, единственным отличием является колонка Выражение, здесь мы можем указать любые вычисления, какие нам требуются, к примеру:
Заметим, что название реквизитов написаны через точку, то есть мы можем здесь обращаться как дочерним элементам, так и к созданным папкам в составе набора:
На практике применение зачастую только усложняет работу программисту 1С дополнительной прописью названия папки при сложных выражениях, но при огромном количестве данных это помогает удобно структурировать поля.
Нужна помощь в работе с 1С? Звоните (495)6624810