Система компоновки данных
Цель лекции: освоить основные приемы интерактивной и программной работы с системой компоновки данных
6.1. Постановка задачи
Ранее в данном курсе мы уже занимались созданием отчетов. Это были простейшие отчеты, использующие табличный макет и предусматривающие программное формирование отчета.
Мы использовали самый простой вид отчетов, который позволяет разработчику полностью настроить внешний вид отчета, набор данных, которым оперирует отчет, в Конфигураторе, после чего пользователь может построить такой отчет. Возможности пользовательского вмешательства в процесс построения заключались лишь в изменении некоторых параметров. Например, начала и окончания периода, за который строится отчет.
Подобные отчеты все еще можно встретить в тиражных конфигурациях, но им на смену приходят отчеты, в основе которых лежит система компоновки данных (СКД). С точки зрения пользователя, точнее, достаточно опытного пользователя, который, возможно, знаком с основами конфигурирования 1С:Предприятие 8, такой отчет предоставляет несравненно более широкие возможности. Например, пользователь может самостоятельно, без необходимости пользоваться Конфигуратором, настроить множество параметров вывода отчета, представить исходные данные, лежащие в основе отчета, в том виде, в котором ему нужно - от простого необработанного списка, до таблиц с группировками или графических диаграмм различных видов.
С точки зрения разработчика система компоновки данных так же предоставляет гораздо более широкие возможности - от создания отчетов, даже достаточно сложных, пользуясь лишь средствами графического интерфейса, до полного управления процессом построения отчета из программного кода.
То, что мы называем система компоновки данных, на самом деле, представляет собой целый комплекс систем, которые, участвуя в построении отчета, выполняют весь набор действий - от получения необходимых исходных данных до вывода готового отчета пользователю.
Отчеты, построенные на основе схемы компоновки данных, обладают теми же свойствами, что и обычные отчеты. Схема компоновки данных - это макет, основа компоновки отчета, который можно использовать, естественно, учитывая особенности этого механизма, как и обычный табличный макет, которым мы уже умеем пользоваться. Так, на основе СКД могут быть построены отчеты - самостоятельные объекты конфигурации, отчеты на основе макетов, подчиненных другим объектам, внешние отчеты.
В этой лекции мы рассмотрим возможности СКД на нескольких примерах:
- Простой отчет, не требующий программирования, но, тем не менее, использующий основные возможности схемы компоновки данных.
- Отчет, построенный с использованием программного обращения к механизмам СКД.
6.2. Автоматическое построение отчета с помощью СКД
Мы собираемся, с помощью системы компоновки данных, создать отчет, который отражает движение материалов, в денежном выражении, по местам хранения. Для построения такого отчета нам понадобятся следующие сведения:
- Номенклатурные позиции;
- Центры материальной ответственности или склады;
- Информация о начальных и конечных остатках материалов, а так же о приходе и расходе материалов за период, заданный пользователем.
Приступим к решению этой задачи, начав с создания нового объекта конфигурации Отчет ; назовем его МатериалыСКД рис. 6.1.
На вкладке отчета Основные нажмем на значок увеличительного стекла около поля Основная схема компоновки данных. Появится окно Конструктора макета, где в качестве типа макета доступен лишь один - Схема компоновки данных. Не будем менять имя макета ОсновнаяСхемаКомпоновкиДанных и нажмем Готово. В составе макетов, подчиненных отчету, появится новый макет - ОсновнаяСхемаКомпоновкиДанных, будет открыто окно конструктора СКД, рис. 6.2.
Окно конструктора СКД содержит несколько вкладок. Работа по созданию отчета начинается с добавления данных, из которых этот отчет будет состоять. Делается это на открытой по умолчанию вкладке Наборы данных.
В левой части окна, в меню кнопки Добавить набор данных выберем Добавить набор данных - запрос, рис. 6.3.
В левой части окна появится новый набор данных, окно изменится - в частности, в его нижней правой части появится окно для ввода запроса ( рис. 6.4). Текст запроса можно составить вручную и ввести в это поле, а можно воспользоваться уже знакомым вам по предыдущим занятиям Конструктором запроса, нажав соответствующую кнопку около поля.
Выше мы сформулировали задачу построения отчета. Данные, которые нам нужны, мы можем обнаружить в виртуальной таблице регистра накопления ОстаткиМатериалов.ОстаткиИОбороты. В частности, в этой таблице нас интересуют следующие поля:
- Номенклатура
- ЦентрОтветственности
- СуммаНачальныйОстаток
- СуммаПриход
- СуммаРасход
- СуммаКонечныйОстаток
Добавим эти поля в раздел Поля вкладки Таблицы и поля окна конструктора запроса, рис. 6.5.
После того, как поля добавлены, мы завершаем работу с конструктором запроса нажатием на кнопку ОК. В окне конструктора схемы компоновки данных появился список полей - благодаря флагу Автозаполнение, который находится в нижней части окна и по умолчанию установлен. Эти поля называют доступными полями - с ними можно работать при создании отчета.
В поле Запрос появился текст запроса, который, при необходимости, можно редактировать.
Перейдем на вкладку Ресурсы, перенесем из списка Доступные поля все поля, подходящие для вычисления по ним итогов, в список, находящийся в правой части окна. Автоматически сделать это можно, нажав на кнопку Добавить все ресурсы, расположенную между полями. В списке ресурсов, в столбце Поле, находится наименование поля, а в столбце Выражение - агрегатная функция, которая применяется к данным. По умолчанию - это функция суммирования, но, при необходимости, здесь можно указать и другую функцию, рис. 6.6.
Теперь приступим к оформлению отчета. Перейдем на вкладку Настройки, рис. 6.7.
Здесь мы собираемся добавить в отчет новую таблицу, данные в которой по строкам будут сгруппированы по номенклатуре, а по столбцам - по центрам ответственности. Для этого воспользуемся Конструктором настроек, вызвать который можно, нажав соответствующую кнопку в правой части окна. Работа с Конструктором настроек компоновки данных, как и с другими конструкторами, заключается в пошаговой настройке параметров будущего отчета, на рис. 6.8 вы можете видеть первое окно конструктора.
Здесь нам предлагают выбрать один из трех доступных типов отчета. Тип Список позволяет вывести исходные данные отчета в виде обычного списка. Таблица позволяет группировать данные, Диаграмма позволяет визуализировать данные в виде диаграмм различных типов. Эти же типы отчетов можно добавлять в отчет и минуя Конструктор настроек.
Мы выберем тип отчета Таблица и нажмем на кнопку Далее. Появится окно для настройки состава полей, отображаемых в отчете ( рис. 6.9). Выберем из списка в левой части отчета все поля, которые должны присутствовать в отчете, при необходимости, с помощью кнопок со стрелками, направленными вверх и вниз (они находятся в правой части окна), поменяем порядок полей таким образом, чтобы поля-ресурсы располагались в таком порядке:
- СуммаНачальныйОстаток
- СуммаПриход
- СуммаРасход
- СуммаКонечныйОстаток
В очередной раз нажмем Далее, отобразится окно, в котором нам предлагают определить поля, по которым будут сгруппированы таблицы, строки и колонки отчета. В нашем случае для группировки доступны два поля - Номенклатура и ЦентрОтветственности. С помощью кнопки со стрелкой, направленной вправо, находящейся между списками Доступные поля и Строки, перенесем в список Строки поле Номенклатура. Аналогичное действие выполним для поля ЦентрОтветственности и списка Колонки, рис. 6.10.
Нажмем кнопку Далее. Следующее окно позволяет настроить упорядочивание данных. Упорядочим таблицу по полю Номенклатура, по возрастанию, рис. 6.11.