Вложенный отчет 1с скд

Обновлено: 04.07.2024

Сначала получаем форму.

Если отчет хранится в базе тогда выполняем на клиенте код:

Далее получаем настройки:

Через серверный вызов получаем настройки и если нужно заполняем параметры Компоновщика в отдельной процедуре.

Загружаем измененные настройки в компоновщик

Код выполняется на клиенте, сначала мы формируем структуру с необходимыми параметрами формы, а потом вызываем процедуру открытия. Часто используемые параметры в данном случае это:

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

Код выполняется на сервере.

Получение локального макета

Получение макета произвольного отчета

Получение макета во внешней обработке

Получение макета из внешней обработки или отчета

Далее мы получаем настройки. Настройки СКД могут быть взяты из разных источников. Мы можем их получить из самой СКД:

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

Мы можем получить настройки с отдельного компоновщика настроек, добавленного на произвольную форму.

И когда будем формировать

Далее программно заполняем параметры Компоновщика. Об этом подробно в разделе 4 .

Объявляем создаем необходимые объекты:

Создаем макет компоновки с помощью компоновщика макета:

Если результат выполнения СКД нужно вывести в таблицу значений то соответствующий тип генератора нужно указать в параметрах:

Инициализируем процессор компоновки данных

Создаем процессор вывода:

Для вывода в таблицу значений используется другой процессор вывода:

Запускаем процесс вывода:

Теперь мы можем проводить нужные операции с полученными данными.

Если вывод в таблицу значений завершился ошибкой “Не поддерживается вывод таблиц и диаграмм в универсальную коллекцию значений” значит настройки СКД не подходят для такой выгрузки, и нужно их изменить, об этом ниже.

При программном формировании СКД как в пункте 2 у нас есть огромное количество возможностей по управлению отчетом. Опишем самые часто используемые из них.

Или если с добавлением нового параметра

Переменная Настройки содержит в себе всю палитру настроек которая доступна в редакторе СКД в разделе “Настройки”. Наиболее часто из них программно редактируются отборы, параметры и структура, в случае когда отчет с табличной структурой надо вывести в таблицу значений. Рассмотрим их подробнее.

Параметры

Все параметры создаются при создании исходного отчета, исключение если параметр был добавлен при редактировании запроса. Значение существующего параметра устанавливается следующим образом:

Добавление параметра делается следующим образом

Отбор

У отборов нет специальных функций по установке значений. Поэтому нужно перебирать коллекцию циклом.

Структура

Для адаптации отчета к выводу в таблицу значений нужно очистить структуру группировок отчета и создать поле группировки “Детальные записи”.

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

Приведенные примеры кода были протестированы на платформе 1С:Предприятие 8.3 (8.3.13.1690).

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

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

Отработаем следующий кейс: в демонстрационной базе ERP необходимо получить отчёт, который собирает сводную выручку по менеджерам, а затем выводится информация о начислении зарплаты менеджеру за этот период.



Рис. 1 Сводная выручка менеджеров

2. Формирование выборки по регистру

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

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



Рис. 2 Простой отчет по выручке

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



Рис. 3 Настройки СКД

Сохраним, сформируем отчет по выручке, проверим результат.

Отчет выглядит так.



Рис. 4 Отчет по выручке после нужных настроек СКД

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

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



Рис. 5 Закладка Вложенные схемы

Видим стандартный конструктор схемы компоновки данных, создаем новый простой запрос.



Рис. 6 Конструктор схемы компоновки данных

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



Рис. 7 Настройки системы компоновки данных с помощью мастера

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

Рис. 8 Отборы на вложенный запрос 1С

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



Рис. 9 Поле компоновки в системе компоновки данных в 1С

Аналогично задаем «Конец периода» в системе компоновки данных в 1С, в итоге должно получиться вот так.



Рис. 10 Заданный Конец периода в системе компоновки данных

Добавляем отбор. Напоминаю, нам нужен отбор по сотруднику из результата верхнего запроса.

Добавляем отбор, в левой части выбираем физическое лицо, в правой части затираем тип, выбираем тип «Поле компоновки» для данных, там находим поля верхней схемы (владельца) – «МенеждерФизическоеЛицо».



Рис. 11 Поле компоновки данных

Готово, настройка должна выглядеть теперь вот так, нажимаем «ОК».



Рис. 12 Результат настройки СКД

3. Вложенный отчет

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



Рис. 13 Добавление вложенного отчета



Рис. 14 Результат добавления вложенного отчета

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



Рис. 15 Перенесенные настройки вложенных схем

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

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

Для разработки отчета на СКД из произвольных данных, нужно сделать следующее:

1. Создать отчет на СКД, в котором нужно добавить набор данных с типом «объект»;

2. Вывод результата СКД в форму программным способом;

3. В момент инициализации во внешние наборы данных должна быть передана подготовленная произвольная таблица.

СКД форма отчета - создаем отчет с набором «объект»

Лучше в качестве заготовки взять один из отчетов текущей системы 1С или сделать новый.

Добавляем новый набор данных, тип набора - «объект». Добавляем и настраиваем поля. У полей указываем тип и роль при необходимости.



Рис. 1. Набор данных с типом «объект»

1. Как вывести отчет СКД программно

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



Рис. 2. Процедура «ПриКомпоновкеРезультата»

2. СКД: форма отчета через внешний набор данных перед выводом

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

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



Рис. 3. Формирование произвольной таблицы

Таким способом можно упростить разработку отчетов, в которых нет возможности использовать СКД.

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

На рисунке ниже я добавил отбор по организации и вывел дополнительно единицу изменения номенклатуры в пользовательском режиме.

Читайте также: