Создание отчетов с помощью СКД - основные понятия и элементы

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

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

система компоновки данных схема макет поля ресурсы параметры

157
Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

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

В данной статье приводятся основные понятия системы компоновки данных и описаны основные ее составляющие, без которых нельзя построить практически не один отчет. По причине большого количества информации, описание получается кратким, отражающим основную суть. По этой причине, данная статья, это своеобразная методичка, к которой можно обратиться в любой момент и быстро найти необходимую информацию. Собственно, изначально я и создавал данный материал для себя именно для этой цели. 

Очень прошу экспертов в этой области, писать в комментариях дополнения или указывать на допущенные мной неточности.

Оглавление

  1. Основные понятия
  2. Макет компоновки данных
  3. Особенности схемы компоновки данных
  4. Основные поля схемы компоновки
  5. Настройка ролей для полей схемы компоновки
  6. Вычисляемые поля схемы компоновки
  7. Ресурсы схемы компоновки
  8. Параметры схемы компоновки

 

Основные понятия

СКД появилась на смену более простого объекта – Построитель отчета, который активно использовался в версиях 1С 8.1 и 8.2.

Система компоновки данных – это мощный и гибкий инструмент для создания отчетов любой сложности. Основные элементы системы компоновки и этапы формирования отчета отображены виде следующей схемы:

Основная схема работы СКД

Основными составляющими системы компоновки данных является схема компоновки и настройки компоновки.

Схема компоновки – это базовый элемент СКД, в котором описываются все правила получения и обработки данных. Схема компоновки состоит из ряда элементов указанных выше.

Есть еще дополнительные элементы схемы, такие как:

  • Связи наборов данных
  • Макеты
  • Вложенные схемы

Данные элементы применяются не всегда, в основном для построения сложных отчетов и будут рассмотрены в следующих статьях.

Настройки компоновки – это также необходимый элемент для формирования отчета. В настройках описывается, как именно данные будут представлены пользователю. Настройки компоновки будут подробно рассмотрены в следующей статье.

Весь процесс формирования отчета происходит автоматически. От пользователя требуется только описать элементы схемы компоновки и указать необходимые настройки компоновки. Однако есть возможность выполнить этот процесс в ручном режиме используя программный код. Программное формирование отчетов также будет рассмотрено позже. В данной же статье будет приведено описание основных элементов схемы компоновки. Но сначала раскроем понятие макета компоновки, который получается в процессе работы компоновщика макета, в результате наложения настроек компоновки на схему компоновки.

 

Макет компоновки данных

Макет компоновки получается путем наложения настроек компоновки на схему компоновки. Настройки компоновки описывают представление данных схемы в итоговом отчете – это отдельная большая тема, она будет рассмотрена в следующей статье. Как было указано в общей схеме, макет компоновки состоит из следующих составляющих:

  • Наборы данных с результирующими запросами
  • Связи наборов данных
  • Значения параметров
  • Макеты различных областей отчета
  • Тело макета компоновки с настройкой соответствия между структурой отчета и макетами

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

 

Особенности схемы компоновки данных

Схема компоновки данных может быть представлена в виде XML. Созданную в конфигураторе схему можно выгрузить в XML файл:

Выгрузка загрузка схемы компоновки

Затем, можно загрузить сохраненную схему в консоль системы компоновки данных в режиме 1С-Пердприятие, и продолжить работу с ней или сформировать отчет. Работа со схемой компоновки в пользовательском режиме 1С, доступна только для «толстого клиента».

В данной статье рассматривается наиболее часто используемый набор данных схемы компоновки – Запрос. Создание наборов данных других типов, а также создание нескольких наборов данных будет описано отдельно.

В наборе данных «Запрос» схемы компоновки можно использовать произвольный запрос к базе данных, с одним ограничением - нельзя использовать секцию «ИТОГИ». Расчет итогов настраивается на уровне всей схемы целиком, так как в схеме могут использоваться несколько наборов данных или набор данных «Объект», который может представлять собой произвольную таблицу значений.

Наложить условия в схеме компоновки можно несколькими способами:

  • Указать условия на уровне запроса – жесткий отбор, который нельзя отключить в настройках компоновки. Если заданы параметры, они должны быть обязательно указаны, иначе будет выдано сообщение об ошибке.
  • Указать условие на уровне настроек компоновки – отбор указывается на уровне настроек компоновки на закладке «Отбор». Пользователь может управлять такими отборами на уровне редактирования варианта отчета или пользовательских настроек. Если отбор указан, он будет добавлен в итоговый запрос макета компоновки (работа с настройками компоновки будет рассмотрена в следующей статье).
  • Указать условие в расширении языка запроса – отбор указывается на закладке «Параметры» схемы компоновки или в настройках компоновки. Указание параметров не является обязательным. В итоговый запрос макета компоновки отбор будет включен только в том случае, если он задан (расширения языка запросов для СКД будут рассмотрены в следующих статьях). 

Если в качестве запроса используется пакет запросов, отбор, указанный в настройках компоновки будет применяться ко всем запросам пакета, если это возможно.

Указание порядка сортировки в схеме компоновки можно задать следующими способами:

  • Сортировка на уровне запроса – сортировка указывается в запросе схемы компоновки, не может быть отредактирована в настройках компоновки.
  • Сортировка на уровне настроек компоновки – указывается в настройках компоновки. Данная настройка не включается в итоговый запрос макета компоновки, и накладывается уже после, на отобранные данные. Сортировка перекрывает сортировку, указанную в запросе схемы компоновки.

 

Основные поля схемы компоновки

Основные поля схемы компоновки формируются автоматически при сохранении набора данных. На состав сформированных полей влияет флаг «Автозаполнение» и использование расширений языка запросов для СКД (будет рассмотрено в следующих статьях):

Флаг - автозаполнение

Таблица основных полей схемы компоновки данных имеет следующие реквизиты:

Путь – наименование поля для работы с ним в схеме компоновке: вычисляемые поля, ресурсы и в настройках компоновки. Есть возможность спрятать одно поле в другое. Для этого необходимо прописать путь с указанием родительского поля: [Родительское поле].[Поле]. Указанное поле будет доступно как вложенное в родительское. Моно указать путь, содержащий пробел, в этом случае, поле необходимо заключить в квадратные скобки [].

Заголовок – наименование поля для пользователей: в шапке отчета, в настройках варианта отчета (в пользовательском режиме), в пользовательских настройках.

Ограничение поля – ограничение видимости поля в настройках, в зависимости от установленных флагов: выбранные поля, отборы, группировки, поля сортировки.

Ограничение реквизитов – ограничение видимости вложенных реквизитов поля в настройках, в зависимости от установленных флагов. Для реквизитов простых типов данная настройка заблокирована. Если разрешено использование вложенных реквизитов, автоматически разрешается использование и самого поля, если даже у поля установлен флаг запрета.

Роль – группа настроек поля, которые необходимы для корректного расчета итогов по группировкам для начального и конечного остатков. Используются для вывода данных виртуальной таблицы «остатки и обороты» регистра накопления и виртуальных таблиц регистра бухгалтерии. Данная настройка подробно рассмотрена ниже в отдельном разделе.

Выражение представления – выражение для переопределения стандартного представления значения поля. Могут использоваться все доступные поля компоновки, внутренние функции СКД и экспортные функции общих модулей.

Выражение упорядочивания – переопределение параметров сортировки по полю. Если в настойках компоновки выбрано поле для сортировки, у которого задано выражение упорядочивания, сортировка будет выполняться по заданным в выражении параметрам (а не по тем, которые указаны в настройках компоновки).

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

Тип значения – указание определенного типа для поля компоновки, если оно имеет составной тип. Настройка используется только при выборе значений для отбора в настройках компоновки.

Допустимые значения – задание списка доступных значений для отбора по данному полю в настройках компоновки. В списке можно задать произвольные представления для всех доступных для отбора значений. Для выбора доступных значений обязательно предварительное указания типа значения для поля.

Оформление – настройка оформления для поля: цвет, шрифт, формат, положение и прочее. Настройка «Текст» - не работает ожидаемым образом, произвольный текст не выводится.

Параметры редактирования – настройки редактирования поля, при выборе значений для отбора в настройках компоновки. Настройки работают только для управляемого приложения. Доступны следующие параметры:

  • Маска – маска для ввода текстового поля
  • Связи параметров выборы – настройка связей с другими параметрами, доступными для отбора (аналогично настройке для реквизитов управляемой формы).
  • Параметры выбора – задание параметров для их передачи в форму выбора значения.
  • Связь по типу – наследование типа от другого реквизита отбора. Например, это может быть элемент плана видов характеристик или бухгалтерский счет. Если указан счет, дополнительно необходимо указать «Элемент связи» (числовое поле). Тип, в данном случае, будет наследован от субконто на указанном счете. Номер субконто соответствует элементу связи.
  • Форма выбора – указание конкретной формы для выбора значения (при отключенном быстром выборе для поля). Форма указывается в виде строки.
  • Формат редактирования – формат редактирования полей с типами данных: число, дата, булево.
  • Быстрый выбор – указание возможности выбора значения из списка выбора (без открытия формы выбора).
  • Выбор групп и элементов – вид выбираемых значений: группы, элементы, группы и элементы.

 

Настройка ролей для полей схемы компоновки

Роли полей компоновки необходимо указывать для корректного расчета итогов для начального и конечного остатков. Роль каждого поля и все необходимые настройки указываются в отдельном окне, которое открывается из списка реквизитов полей компоновки:

Поля - настройка ролей

Для полей доступны следующие роли:

Период – роль должна быть указана для всех используемых полей периодов в схеме компоновки, начиная с номера строки. Нумерация периодов должна быть указана строго последовательно от самого младшего периода, используемого в отчете, до самого старшего:

Роль - период

Поля с ролью «Период» нельзя использовать в одной группировки отчета совместно с другими полями.

Для корректного расчета итогов по периоду «Регистратор», в схеме компоновки должно обязательно присутствовать дополнительное поле периода:

  • «Период» - если для виртуальной таблицы указана периодичность – «Регистратор»,
  • «ПериодСекунда» - если для виртуальной таблицы указана периодичность – «Авто». 

Флаг «Дополнительный» указывает на то, нужно ли в итоговый запрос макета компоновки включать неявно все родительские периоды. Если флаг снят, все родительские периоды будут включены в итоговый макет.

Совместное использование группировки с периодичностью по неделям с группировками большей периодичности (например – месяц), могут приводить к задвоению группировки по неделям, если часть недели приходится на один период группировки с большей периодичностью, а часть на другой:

Совместное использование группировок по неделям и месяцам

Если для поля «Регистратор» указана роль «Период», в структуре группировок настроек компоновки выбрать подчиненные поля регистратора нельзя.

Измерение – роль необходимо указывать для полей группировок, по которым рассчитываются итоги. Если используется не само измерение, а его вложенный реквизит, дополнительно необходимо указать родительское поля:

Роль - измерение

Для родительского поля также должна быть указана роль «Измерение».

Если в настройках компоновки выбрано подчиненное поле измерения, а само измерение не выбрано, оно будет добавлено не явно в результирующий макет компоновки. Это необходимо для корректного расчета итогов.

Счет – роль должна быть указана для поля, которое содержит бухгалтерский счет, используется для работы с регистром бухгалтерии. Дополнительно необходимо указать вид счета «Счет.Вид»:

Роль - счет

Если вид счета не указан система будет считать, что счет - Активно/Пассивный. Соответственно отрицательные значения остатков на начало и конец выводится не будет.

Остаток – роль должна быть указана для полей, начального и конечного остатков:

Роль - остатки

Настройки данной роли следующие:

  • «Имя» - произвольное наименования группы полей, должно быть одним и тем же для полей начального и конечного остатков одного и того же ресурса регистра,
  • «Тип» - начальный или конечный остаток,
  • «Бух. тип» - указывается бухгалтерский тип итогов (дебит или кредит), используется для работы с регистром бухгалтерии,
  • «Поле счета» - поле, которое содержит бухгалтерский счет, по которому рассчитываются итоги. Также используется для работы с регистром бухгалтерии.

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

Расчет итогов может выполнятся не корректно в случае, если используется вложенный запрос, в котором присутствуют измерения, отсутствующие в основном запросе. Аналогичная ситуация с применением временных таблиц выполняется корректно.

Также, в окне настройки роли можно указать дополнительные настройки:

  • Игнорировать значение NULL – если данный флаг установлен, из итогового набора записей будут исключены групповые записи для которых данное поле имеет значение «NULL».
  • Обязательное – установка флага говорит о том, что данное поле будет добавлено в итоговый макет компоновки, если в настройках компоновки используется хотя бы одно поле из этого набора данных. Можно использовать данную настройку для принудительного расчета итогов по всем измерениям регистра накопления или развернутое сальдо по всем субконто регистра бухгалтерии, не зависимо от того, какие измерения или субконто используются в настройках компоновки отчета.

 

Вычисляемые поля схемы компоновки

Вычисляемые поля - это дополнительные поля схемы компоновки, значения которых рассчитываются на основании основных полей компоновки (полей наборов данных).

Вычисляемые поля имеют те же реквизиты, что и основные поля, за исключением: «Роль», «Проверка иерархии набора данных», «Проверка иерархии параметра».

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

 

Ресурсы схемы компоновки

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

В качестве ресурсов можно использовать как обычные поля схемы компоновки так и вычисляемые поля.

Для расчета итогов можно задать агрегатную функцию, или формулу с произвольным выражением с вхождением агрегатных функций:

Ресурсы - выражение для расчета итогов

В выражениях можно использовать внутренние функции СКД и экспортные функции общих модулей. Список внутренних функций СКД весьма обширный и позволяет автоматизировать решение множества сложных задач. В одной из следующих статей будут описаны наиболее интересные полезные функции.    

Итоги можно рассчитывать не только по числовым полям. Например, можно применить агрегатную функцию «КОЛИЧЕСТВО» к ссылочному полю. Также итог – это не обязательно число. Можно использовать функцию общего модуля для формирования строкового значения итога.

Есть возможность указания конкретных группировок, для которых необходимо рассчитывать итоги. Для этого используется настройка «Рассчитывать по»:

Ресурсы - настройка

Если настройка не задана, итоги будут рассчитываться для всех группировок отчета. Если для ресурса указана группировка, итоги будут рассчитываться по указанной группировке и по всем вложенным в нее группировкам.

Для объектов ссылочных типов можно указать отдельно группировку по элементам и по иерархии. Соответственно, можно настроить расчет итогов отдельно для элементов и для групп этих объектов: 

Ресурсы - рассчитывать по

Одно и то же поле можно выбрать в качестве ресурса более одного раза. В этом случае, для ресурсов должны быть указаны разные группировки в настройке «Рассчитывать по». Это позволит для одного и того же поля применять различные агрегатные функции на разных уровнях группировки отчета.

Поля, выбранные как ресурсы можно использовать в настройках компоновки в качестве полей группировок.

 

Параметры схемы компоновки

Параметры создаются автоматически при сохранении текста запроса источника данных. Можно добавить дополнительные параметры в ручную, если это необходимо.

Таблица параметров имеет следующие реквизиты:

Имя – имя параметра, заданное в тексе запроса.

Заголовок – текстовое представление параметра в настройках компоновки.

Тип – тип значений параметра.

Доступные значения – список доступных значений в рамках указанного типа. Можно определить произвольные синонимы доступных значений.

Значение – значение параметра по умолчанию. Можно отключить видимость таких параметров в настройках компоновки.

Доступен список значений – флаг, позволяющий задать список значений для параметра.

Выражение – задается выражение на языке выражений СКД. В выражении можно использовать функции СКД, и имена параметров, текущего или других (указание параметров должно начинаться с символа «&»). Можно использовать для приведения заданного параметра к определенному виду, или для расчета параметра на основании других параметров.

Параметр функциональной опции – необходимо указать параметр функциональной опции, если требуется передать его системе компоновки данных. Это необходимо для определения видимости полей данных в режиме 1С-Предприятие, которые привязаны к параметризуемой ФО.

Значения не параметризуемых ФО также учитывается СКД и влияют на видимость полей в пользовательском режиме.

Включать в доступные поля – флаг, определяющий видимость параметра в настройках компоновки, на закладках: «Поля», «Отборы», «Сортировка».

Ограничение доступности – флаг, ограничивающий видимость параметра на закладке «Параметры» в настройках компоновки.

Запрещать не заполненные значения – флаг, запрещающий не заполненные значений параметра.

Использование – определяется использование параметра в итоговом запроса макета компоновки. Значение «Авто» - позволяет не включать отбор по данному параметру в итоговом запросе, если он не задан и отбор по нему указан в расширении запроса схемы компоновки (в фигурных скобках). Значение «Всегда» говорит о том, что параметр включается в итоговый запрос макета компоновки в любом случае. В этом случае, в пользовательском режиме, использование данного параметра отключить нельзя.  

Параметры редактирования – настройки редактирования поля параметра, аналогичны настройкам для основных и вычисляемых полей компоновки (описаны выше).

 

Для первой статьи, я думаю, достаточно. В следующе статье будут рассмотрены настройки схемы компоновки данных. Настройки схемы – это обязательная составляющая для формирования макета компоновки. Без указания настроек вывод отчета не возможен. Но, поскольку, это достаточно обширная тема, я решил выделить ее в отдельную статью, которая будет скоро опубликована.

Всем удачи в освоении и более углубленном изучении системы компоновки данных! Продолжение следует…

 

Другие мои статьи про механизмы платформы 1С

  1. Функциональные опции - все возможные варианты использования

  2. Работа с объектом «СообщениеПользователю», и другие варианты информирования пользователя.

  3. Основные принципы работы с режимами автоматических и управляемых блокировок. Варианты контроля остатков. Разделение итогов. 

 

157

См. также

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

Комментарии
Избранное Подписка Сортировка: Древо
1. user811769 2 25.06.19 09:02 Сейчас в теме
Спасибо за статью, не знала про роли и для чего они используются
4. ids79 2594 25.06.19 18:52 Сейчас в теме
(1)Пожалуйста.
Следите за продолжением, дальше будет интереснее.
2. Zombi 4 25.06.19 12:27 Сейчас в теме
Полезная статья! Жду продолжения. СКД можно по моему вообще отдельную жизнь посвятить. Сколько статей читаешь, видео смотришь, все равно куча нового каждый раз.
3. cool99 25.06.19 13:27 Сейчас в теме
(2)Месяц отчет какой-то не пишешь, заходишь и все равно куча нового, причем каждый раз одно и тоже всегда :)
8. ids79 2594 26.06.19 10:23 Сейчас в теме
(2)
Сколько статей читаешь, видео смотришь, все равно куча нового каждый раз.

Это точно!
5. kredko 19 26.06.19 04:07 Сейчас в теме
Хотелось бы узнать: как СКД формирует дерево значений? Например, как форма структуры подчиненности, которая строится на основании реквизита "ДокументОснование".
9. ids79 2594 26.06.19 10:28 Сейчас в теме
(5)Используя иерархическую группировку, например.
Можно создать собственную иерархию или иерархический вывод детальных записей.
Я буду писать об этом в следующих статьях, не пропустите...
6. HAMMER_59 167 26.06.19 09:36 Сейчас в теме
Есть такое мнение - что в нормальном тексте 70% слов не несут смысловой нагрузки, но это вовсе не означает, что эти 70% лишние, без них текст становится тяжелым для восприятия.
Статья компактная, сжатая, много информации - читать крайне тяжело.
7. ids79 2594 26.06.19 10:22 Сейчас в теме
(6)Согласен с Вами.
Это в некотором роде - методическое пособие.
Основное назначение материала - быстрый поиск нужной информации.
Делал для себя, чтобы лучше заполнить, и, если что, быстро вспомнить.
У меня в планах выложить несколько статей именно такого характера, чтобы кратко охватить как можно больше материала. А потом уже углубляться в детали, с примерами и т. п.
12. тшл 6 26.06.19 18:02 Сейчас в теме
(7)Добрый день.Когда ждать продолжения?
14. ids79 2594 26.06.19 18:31 Сейчас в теме
(12)В течение недели, надеюсь
10. leosoft 138 26.06.19 10:57 Сейчас в теме
Интересна также информация о применении СКД не для отчетов, а в обработках и т.п.
13. ids79 2594 26.06.19 18:30 Сейчас в теме
15. epsilon 27.06.19 11:13 Сейчас в теме
(10) Да, такое возможно и иногда очень помогает. Нет разницы, отчет это или обработка. Просто вывод не в отчет. Так же крайне полезная вещь, которую я использовал - это формирование данных из другой конфигурации - т.е. запускаешь отчет "где-то там" и себе эти данные тянешь (естественно, не сами объекты, а наименования, гуиды и прочее)
11. Vlan 11 26.06.19 11:17 Сейчас в теме
"Важно, что запрос макета компоновки может существенно отличатЬся от запроса источника данных схемы компоновки"

Исправьте, пожалуйста, грамматическую ошибку. В выделенном тексте особенно в глаза бросается.
Оставьте свое сообщение