Что можно сделать для упрощения разработки таких отчетов?
- 1. Описать иерархию статей в наглядном виде.
- 2. Простая настройка вывода результата.
- 3. Получение данных разделить на небольшие независимые шаги.
Предлагаемое решение:
- 0. Реализация в виде подсистемы конфигурации (управляемые формы 8.2/8.3 (такси частично тестировалось)).
- 1. Иерархический справочник статей отчета.
- 2. Результат описывается отчетом на СКД (внутренний/внешний) с объектным набором данных.
- 3. Каждая статья содержит СКД, которая реализует интерфейс основного отчета (поля, параметры).
Далее, чтобы не было скучно, сразу примеры из прилагаемой базы.
Пример 1. Нужно получить такой отчет:
Добавляем новый отчет "Отчет1" в конфигурацию (возможно и внеший отчет; в примере будет внутренний), СКД:
Настройка:
Далее переходим в предприятие, добавляем элемент справочника "управленческие отчеты". Заполняем имя отчета конфигурации, по кнопке "Заполнить поля и параметы..." заполняем таблицы - это будет интерфейс для статей. Поле с галкой "Это статья" при формировании отчета будет заполнятся автоматически ссылкой на статью.
Переходим в справочник "Статьи управленческих отчетов"
Тут нужно описать иерархию статей и реализовать СКД для статей нижнего уровня.
На примере "Статья 1"
Заполняем СКД (для вызова конструктора СКД необходимо запускать толстый клиент, ограничение платформы)
В основном варианте настроек должны быть необходимые поля и параметры (если поля по синонимам, в варианте должны быть они заданы). Результатом должна быть плоская таблица, без итогов и группировок (допустима 1 составная группировка или детальные записи, без общих итогов).
Также присутствует проверка СКД - есть ли нужные поля и параметры, отключены ли общие итоги и т.д..
Остальные статьи отчета аналогично.
Вот и всё, последний штрих - добавить "простой" код в модуль отчета для заполнения объектого набора данных
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
Справочники.УправленческиеОтчеты.ПриКомпоновкеРезультатаУправленческогоОтчета(
ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка, ЭтотОбъект.СхемаКомпоновкиДанных,
ЭтотОбъект.КомпоновщикНастроек, ЭтотОбъект.Метаданные().Имя,
Справочники.УправленческиеОтчеты.НайтиОбъектныйНаборДанныхСКД(ЭтотОбъект.СхемаКомпоновкиДанных).ИмяОбъекта);
КонецПроцедуры
Пример 2. Более приближенный к жизни.
Реализация аналогична, см. прилагаемую базу.
Внедрение подсистемы.
Сохранить конфигурацию из прилагаемой базы в файл. В целевой конфигурации "сравнить/объединить с конфигурацией из файла", отключить все галки, Действия - "отметить по подсистемам файла" - "КонструкторУправленческихОтчетов" + галка на самой подсистеме.
Дополнительная информация
- Универсальный мульти-конструктор отчета UNI - альтернативная разработка. Обычное приложение. Другой подход к реализации похожей задачи.
- В базе присутствует обработка с тестами основной функциональности в формате xUnitFor1C. Статья Использование методики TDD (разработка через тестирование) в 1С