Подготовка данных для отчета
Система компоновки данных предназначена для создания отчетов в 1С:Предприятие на основе их декларативного описания. Использование декларативного описания отчетов позволяет реализовать следующие возможности:
- Создание отчета без программирования.
- Возможность создания различных вариантов отчета.
- Возможность задания различных вариантов пользовательских настроек.
- Использование автоматически генерируемых форм просмотра и настройки отчета.
- Разбиение исполнения отчета на этапы.
- Исполнение отдельных этапов построения отчета на различных компьютерах.
- Независимое использование отдельных частей системы компоновки данных.
- Программное влияние на процесс выполнения отчета.
- Настройки структуры отчета.
- Использование нескольких наборов данных.
- Совмещение в отчете нескольких таблиц.
- Создание вложенных отчетов и т.д.
Возможности системы компоновки данных используются:
- При формировании отчетов.
- При работе динамических списков.
- При подготовке данных для последующей обработки.
Подготовка данных для отчета начинается с описания схемы источника данных. «Наборы данных» получают данные из описанного «Источника данных». В отчете можно использовать любое количество наборов данных.
Выделяют три набора данных:
- «Набор данных – запрос» – это выборка из базы данных на основе языка запросов. В запросе определяются только обязательные поля, которые могут потребоваться в отчете. По итогу запрос строится системой динамически на основе выбранных полей в варианте отчета из списка обязательных полей первоначального запроса.
- «Набор данных – объект» – это имя внешнего источника, который представлен в виде реального объекта конфигурации (справочник, документ и т.д.) или в виде области памяти компьютера, содержащей данные из «Таблицы значений», результата запроса, области ячеек табличного документа или набора записей регистра.
- «Набор данных – объединение» – служит для объединения нескольких «Наборов данных» любого типа в один «Набор данных». В результате формирования отчета информация, из разных наборов данных не связывается, а объединяется.
Запросы в СКД
Особенность СКД при работе с «Набором данных – Запрос» заключается в том, что запрос, выполняемый платформой может отличаться от запроса, написанного в самом наборе данных. На рисунке ниже представлены запросы: слева исходный запрос, справа запрос, сгенерированный платформой при формировании отчета. Например, для агрегатных полей добавляются представления.
При добавлении отбора на уровне отчета, в настройках системы компоновки данных, условия отбора помещаются в текст запроса.
При добавлении отбора для группировки (даже для «Детальной группировки»), в настройках системы компоновки данных, условия отбора не помещаются в текст запроса.
Автоматическое заполнение доступных полей
При включении режима «Автозаполнение» выполняются следующие действия:
- Все поля списка выборки и их дочерние поля становятся доступными для отбора, порядка, выбора, группировки.
- Параметры виртуальных таблиц становятся доступными для отбора.
- Параметры, указанные в запросе становятся доступными для отбора.
- Поля виртуальных таблиц, не вошедшие в список выбранных, но на которые можно наложить условия в параметрах этих таблиц, становятся доступными для отбора.
Расширение языка запросов для системы компоновки данных
Язык запросов для СКД можно расширить с помощью специальных синтаксических конструкций, которые заключаются в фигурные скобки { }.
При использовании расширения языка запросов, правильно будет убирать флаг «Автозаполнение», тогда список полей будет заполняться согласно настройкам расширения языка запросов.
В секции ВЫБРАТЬ можно перечислить псевдонимы полей, которые будут пользователю доступны для вывода в отчете.
Если в записи поля присутствует звездочка в конце ссылочного поля, то пользователю будут доступны подчиненные поля.
В секции ГДЕ можно перечислить псевдонимы полей, которые будут пользователю доступны в отборах отчета. Дополнительно можно указать готовые условия отбора.
Настройка набора данных
Ограничения на поля и на подчиненные реквизиты
На поля и на подчиненные реквизиты полей можно наложить ограничения (ограничения действуют и в режиме 1С:Предприятие и в конфигураторе):
- «Ограничение поля» позволяет запретить использование поля. Важно! Если не установлены ограничения на реквизиты, ограничения на поля не будут отрабатывать.
- «Ограничение реквизитов» позволяет запретить использование вложенных реквизитов (доступно только у агрегатных реквизитов).
Возможно указать следующие ограничения:
- «Поле» – не будет доступно для отображения (на закладке «Поля» и на закладке «Пользовательские поля»).
- «Условие» – не будет доступно в отборах (на закладке «Отбор»).
- «Группа» – не будет доступно в группировках.
- «Упорядочивание» – не будет доступно для упорядочивания (на закладке «Сортировка»).
Тип значения и доступные значения
«Тип значения» – влияет на допустимые типы значений при выборе поля в качестве значения отбора. В основном применяется для полей составного типа, чтобы конкретизировать используемый тип в отчете.
«Доступные значения» – список доступных значений для указания в отборе. При этом можно изменить представление самих значений. Предварительно необходимо обязательно выбрать «Тип значения» для поля.
Соединение наборов данных
При использовании нескольких наборов данных их можно соединить, но при формировании отчета само соединение выполняется на стороне сервера 1С:Предприятие.
При определении в схеме компоновки данных связи между двумя наборами данных используется левое соединение первого набора ко второму, в ряде случаев устанавливается внутреннее соединение.
«Источник связи» – это основной набор данных, «Приемник связи» – это подчиненный набор данных.
«Выражение источник» и «Выражение приемник» – это поля наборов данных по которым осуществляется связь
Флаг «Обязательная связь» определяет обязательность использования связи при разных вариантах выбранных полей пользователем:
- Если флаг установлен, то связь будет использоваться, только если присутствует хотя бы одно поле из набора данных «Приемник связи».
- Если флаг отсутствует, то связь будет использоваться только, если пользователь выбрал поле из поля «Выражение источник».
Иерархические списки
СКД позволяет создавать иерархические списки в отчете не только на основе иерархических справочников, но и на основе линейных списков.
Для построения иерархии создается набор данных, который связывается сам с собой и соединяется с набором данных, содержащим простой список.
При связывании набора данных «ИерархияСотрудников» с самим собой, в качестве выражения источника указывается искомое поле (в примере это поле «Руководитель»), а в качестве выражения приемника указываем поле, в котором будет осуществляться поиск (в примере это поле «Сотрудник»). Получается, из каждой записи будет получено значение поля «Руководитель» и это значение система будет искать в списке значений поля «Сотрудник». Таким образом, система рекурсивно получит все записи и представит их в виде иерархии. Значение руководителя будет передаваться в параметр «Ссылка». Параметр может принимать список значений, поэтому поставим флаг в поле «Список параметров».
Создаем вторую связь, которая будет указывать, что поле «Сотрудник» набора данных «Сотрудники» следует связывать с полем «Сотрудник» иерархического набора данных «ИерархияСотрудников». Также указываем параметр «Ссылка», а раз он может принимать список значений, ставим флаг в поле «Список параметров».
Важно! Поля, которые обозначают иерархический уровень в наборах данных должны называться одинаково. В нашем примере, в одном наборе данных и в другом поля называются «Сотрудник».
Чтобы поля вспомогательного набора данных «ИерархияСотрудников» не отображались у пользователя, их отключают в настройках доступности у набора данных.
Отбор на вхождение в группу собственной иерархии
Если необходимо разрешить установку отбора на вхождение в группу собственной иерархии, отличной от стандартной используется «Проверка иерархии» на закладке «Набор данных». Для этого добавляется новый набор данных, при помощи которого будет осуществляться проверка иерархии.
Для набора данных организуется связь с самим собой. Выражение источник «ПроверкаИерархииСотрудника», приемник «РодительИерархииСотрудника». Параметр связи «Руководитель», с возможностью использования списка.
Для набора данных «Сотрудники» указывается набор данных проверки иерархии «ПроверкаИерархии», в качестве параметра указывается параметр из набора данных «ПроверкаИерархии». Теперь система будет использовать набор данных «ПроверкаИерархии» для проверки иерархических условий.
Результат настройки представлен на рисунке.
При попытке выбрать сотрудника может возникнуть ошибка: «Выберите группу, а не элемент.». Дело в том, что система при условии «В группе» ожидает от пользователя выбора группы, а не элемента. Поэтому, либо меняем условие на «Равно», выбираем элемент, после устанавливаем условие «В группе» или с клавиатуры в поле значения набираем фамилию сотрудника.
Язык выражений компоновки данных
В системе компоновки данных используется «Язык выражений компоновки данных».
Язык выражений системы компоновки данных предназначен для записи выражений, используемых в различных подсистемах, таких как:
- Схема компоновки данных ‑ для описания вычисляемых полей, полей итогов, выражений связи и т. д.
- Настройки компоновки данных ‑ для описания выражений пользовательских полей.
- Макет компоновки данных ‑ для описания выражений связи наборов данных, описания параметров макета и т. д.
Помимо стандартных функций языка выражений системы компоновки данных можно использовать собственные функции, расположенные в общем модуле с ключевым словом Экспорт. Причем эти функции можно использовать при интерактивной и программной работе с системой компоновки данных.
Колонка в отчете, значение которой будет вычисляться по некоторым выражениям с использованием полей исходного набора данных, может быть создана в окне конструктора схемы компоновки в разделе: «Вычисляемые поля», «Параметры», «Макеты», «Настройки» на закладке «Пользовательские поля».
Вычисляемые поля
«Вычисляемые поля» позволяют дополнить существующий состав полей компоновки данных, определенных на закладке «Наборы данных» или заменить существующие поля, определенные на закладке «Наборы данных».
Вычисляемые поля могут использовать арифметические выражения, конструкцию «ВЫБОР КОГДА ТОГДА КОНЕЦ», и обращаться к экспортным функциям общих модулей системы.
Важно! Вычисляемые поля нельзя использовать в выражении других вычисляемых полей.
Поля ресурсов
«Поля ресурсов» – это поля, значения которых вычисляются для групповых записей, где в качестве выражения используется язык выражений системы компоновки данных. В качестве поля ресурса может выступать не только числовое поле, но и поля других типов.
Ресурсы могут быть рассчитаны в разрезе всех группировок или в разрезе конкретных группировок, при этом будут рассчитаны ресурсы и для вложенных группировок.
Параметры
Схема компоновки данных может содержать параметры для выполнения сложных отборов.
Параметры можно создать:
- Автоматически, на основании текста запроса.
- Интерактивно на закладке «Параметры».
- Программно.
Для параметра можно указать признак обязательности использования, а также запретить использование незаполненного параметра.
Система компоновки данных позволяет использовать стандартные периоды. Для добавляем параметр типа СтандартныйПериод, а в параметрах – даты указываем соответствующие выражения, а также запрещаем их редактирование пользователем.
Ваганов Сергей, эксперт в области разработки прикладных решений на платформе 1С:Предприятие, преподаватель-методист CORS Academy и автор курса «Разработчик 1С с нуля до профессионала».



















































































