Новый мощный инструмент разработки отчетов "Система компоновки данных" появился в версии платформы 8.1. Но в конфигурациях, которые используются для 1с8.1, отчеты так же строятся на основе универсального отчета (используется построитель отчета). Типовой шаблон отчета на СКД появился только в конфигурациях для 8.2. Для того, чтоб как-то упростить работу по созданию отчета с помощью системы компоновки данных и сократить до минимума необходимость кодить вручную предназначена подсистема "Универсальные отчеты СКД".
Перечислю, какие полезные возможности дает подсистема:
Подсистема устанавливается на нужную конфигурацию с помощью сравнения и объединения с поставкой. Она имеет минимальные пересечения с другими объектами конфигурации, что важно для сохранения поддержки конфигурации. Устанавливаются соответствующие наборы прав для пользователей (для создания и изменения отчетов необходимо назначить пользователю роли "Администратор УОС" и "Полные права УОС", для использования существующих отчетов достаточно назначить "Пользователь УОС") и можно приступать непосредственно к созданию отчетов в подсистеме.
Отчеты можно создавать/изменять из формы "Произвольные отчеты". Помимо этого, в форме "Произвольные отчеты" можно создавать группы с назначенными им правами доступа, произвольно структурировать существующие в конфигурации отчеты и обработки, привязывать внешние отчеты и обработки по аналогии со стандартным функционалом.
Закладки отчета.
Создадим новый отчет в подсистеме. На закладке Основная укажем тип отчета, пиктограмму и картинку.
На вкладке Основное можно выбрать тип отчета. Доступен выбор внешнего отчета и внешней обработки, внутреннего отчета, внутренней обработки. Нас интересует типовой отчет - это отчет, который будет работать на базе шаблона, а все его настройки будут храниться в реквизите справочника "уос_ПроизвольныеОтчеты" и восстанавливаться с помощью отчета конфигурации "уос_ТиповойОтчет" при обращении к нему. Таким образом можно создать неограниченное число типовых отчетов без изменения конфигурации. Нажмем кнопку командной панели "Изменить схему компоновки данных":
Создадим набор данных и заполним текст запроса - проделаем все те действия, которые мы выполняем при работе с СКД.
Настройка доступа к отчету (группе отчетов, варианту) производится на закладке Доступ:
Можно задать доступность для конкретных пользователей (на закладке "Пользователи"), групп доступа (на закладке "Группы доступа") и для ролей. Группы доступа - справочник, который принадлежит данной подсистеме и заполняется в ручную или по существующим группам пользователей конфигурации (Синхронизировать). Заполнить его можно из меню "УОС+Группы доступа":
Отчет будет доступен конкретному пользователю, если пользователь принадлежит множеству пользователей, полученному объединением пользователей всех трёх закладок.
Настроить или отключить период формирования отчета можно на вкладке Периоды.
По-умолчанию "НачалоПериода" и "КонецПериода" соответствуют полям выбора начальной и конечной даты периода на данной вкладке, но при желании можно указать и свои названия дат. Для того, чтоб параметры периода были доступны, следует снять для них ограничение доступности в СКД. Если требуется использовать ещё один период, то после установки соответствующей галочки появляются ещё поля периода, соответствующие параметрам запроса "НачалоПериодаДоп" и "КонецПериодаДоп". Названия параметров доп. периода так же легко поменять на свои.
На вкладке Параметры можно задать параметры запроса, алгоритмы их заполнения и различные ограничения на них.
Доступно заполнение параметров на основе алгоритмов, которые сохраняются в базе данных.
На закладке Обработчик событий можно задать обработчик событий перед формированием отчета.
На закладке Расшифровка можно задать параметры расшифровки и различные варианты обработки расшифровки.
Аналогично работе с алгоритмами при заполнении параметра, можно использовать алгоритм для обработки расшифровки. Для расшифровки можно указать, для каких вариантов отчета она будет использоваться.
На вкладке Варианты можно указать варианты настроек для данного отчета.
Для каждого варианта можно настроить доступ, оформление, описание и привязку к макету объекта конфигурации. Можно задать вариант отчета по умолчанию, указать для варианта, будет ли он доступен для изменения, и будет ли он доступен для изменения другим пользователям.
На закладке Источники данных можем указать источники данных, которые будем использовать в нашей СКД. В качестве используемых источников можно брать таблицу значений, другую СКД, произвольный источник или запрос к внешней информационной базе (для 1с8.2).
Для источника данных можно задать свой алгоритм обработки и произвести его отладку при необходимости.
На закладках Оформление и Стандартные периоды можно задать оформление отчета и доступные при настройке выбора периода значения соответственно.
На закладке Оформление можно настроить свои макеты шапки, подвала и колонтитула для отчета, вывести произвольную картинку в шапку.
Если в отчете не отключен период, на закладке Стандартные периоды мы можем указать, какие периоды будут доступны для выбора.
Отчетами можно обмениваться между различными конфигурациями. Они выгружаются в формате xml.
Доступен вызов типового внутреннего отчета с указанным вариантом и возможностью установить параметры и отборы из других объектов конфигруации.
уос_ТиповыеОтчеты.ОткрытьВнутреннийОтчет("", "", Отбор, , Параметры);
Пользовательский режим.
Пользовательский режим работы с отчетом происходит из менеджера отчетов. Группы, отчеты и варианты отображаются в дереве менеджера. Варианты по умолчанию выделены жирно, свои варианты (доступные для изменения) отображаются синим цветом. Есть возможность отключить видимость недоступных отчетов, групп и вариантов.
Теперь рассмотрим, как выглядит отчет для пользователя
Для экономии места и возможности выводить только необходимые настройки в панели настроек ненужные настройки можно отключить для пользователя. А по кнопке "Расширенные настройки" он имеет к ним доступ - открывается форма "Дополнительные настройки отчета".
Итог: Данная подсистема является очень удобным инструментом (пользуюсь ей на протяжении года). Она существенно облегчает жизнь, так как не надо тратить время на написания кода, к примеру для работы с расшифровками или внешними источниками данных. Всё это уже заложено в функционал подсистемы, логично и легко для понимания, быстрого формирования отчетов на основе системы компоновки данных. Единственное, наверное, не рекомендовал бы её новичкам, во всяком случае, до прочтения Хрусталевой, так как прежде чем пользоваться данным инструментарием важно знать, как это работает изнутри.
Подсистема "Универсальные отчеты СКД" распространяется бесплатно, без лицензии. Автор, Руслан Климачев (krv2k логин на infostart), активно занимается развитием своего продукта и оперативно консультирует по возникшим по функционалу вопросам. За что низкий ему поклон! На данный момент актуальна версия 1.2.7.6 (8.1, 8.2 обычное приложение). Автор обещает вариант для управляемых форм. Актуальную версию подсистемы можно скачать на инфостарте.
В качестве эпилога приведу решение задачи.
Задача: Вывести продажи/наличие товара в магазине по кнопке из объекта.
Дано: Готовый типовой отчет в подсистеме.
Требуется добавить возможность вызова типового отчета из других объектов конфигурации.
Решение: Создаем копированием из "УОС_ТиповойОтчет" в конфигурации отчет "УОС_ПродажиДниВНаличииПоСкладам".
В данном отчете создаем произвольный макет и называем его (это важно!!!) именем: Вариант_.
В режиме "1С:Предприятие" открываем наш отчет для изменения. Выставляем галочку "Внутренний" и выбираем внутренний отчет из внутренних отчетов конфигурации.
На закладке Варианты выбираем вариант, который будем использовать и открываем его на изменение. Выбираем из списка наш макет.
Теперь для того, чтобы вызвать отчет из нужного объекта пишем код:
НачальныйОтбор = Новый Структура; Параметры = Новый Структура; Параметры.Вставить("НачалоПериода",ДобавитьМесяц(НачалоМесяца(ТекущаяДата()),-12)); Параметры.Вставить("КонецПериода",НачалоМесяца(ТекущаяДата())-1); Параметры.Вставить("Номенклатура",Номенклатура); уос_ТиповыеОтчеты.ОткрытьВнутреннийОтчет("уос_ПродажиДниВНаличииПоСкладам", "Вариант_Основной", НачальныйОтбор, Истина, Параметры);
Результат:
Если данная статья убедила вас воспользоваться возможностями, которые предоставляет подсистема, то в качестве примера использования её инструментария предлагаю вам скачать набор своих отчетов, сделанных в подсистеме "Универсальные отчеты СКД".