При разработке сложных отчетов в 1С с использованием Системы компоновки данных (СКД) разработчики часто используют Управляемая консоль запросов, отчетов 3.9.0 (расширение, внешняя обработка) и часто сталкиваются со стандартным поведением системы: группировки по умолчанию выводятся вертикально (друг под другом), а ресурсы дублируются для каждой колонки периода. Разберем ситуацию, когда нам требуется вывести дополнительные данные (например, «Максимум» или «Минимум») не в начале строки и не под каждой датой, а строго в конце таблицы в горизонтальный ряд.
В этой статье мы проанализируем несколько эффективных способов решения задачи, включая Универсальный отчет по метаданным расширенный, начиная от простых манипуляций в настройках и заканчивая созданием собственных макетов оформления.
Первым делом рассмотрим самый простой вариант, например СКД. Нет данных - нет столбцов, который не требует написания кода или создания сложных макетов. В СКД за визуальное размещение элементов отвечают «Дополнительные настройки». Выясним, как ими правильно воспользоваться.
Если установить значение Отдельно, система попытается вывести поля не в иерархическом виде (одно под другим), а в отдельных колонках. В этом может помочь СКДБилдер: упрощаем программное создание СКД. Для того чтобы определенные поля выводились в конце, можно создать пустую группировку-контейнер в самом низу структуры настроек и добавить нужные поля именно в её «Выбранные поля».
Рассмотрим ситуацию, когда нам нужно вывести значения, которые не являются классическими агрегатными функциями (например, текстовое пояснение или расчетный коэффициент), в правой части таблицы, где обычно располагаются общие итоги. Если мы просто добавим поле в группировку строк, оно появится слева. Чтобы переместить его вправо, воспользуемся хитростью с ресурсами.
Проанализируем шаги реализации:
Максимум_Значение).Максимум(ИмяПоля). Система позволит это сделать.Важный нюанс: Чтобы этот «псевдо-ресурс» не отображался под каждой колонкой даты (периода) в таблице, нам нужно зайти в настройки этой конкретной группировки колонок и на вкладке «Выбранные поля» исключить данное поле. Оставьте его только в общих «Выбранных полях» отчета или в итоговых колонках. Тогда визуально поле появится один раз в самом конце строки.
Если система «ругается» на то, что поле не входит в группу или не может быть использовано в текущем контексте, мы можем применить механизм пользовательских полей. Это позволяет «обмануть» логику компоновщика.
Разберем алгоритм:
Когда стандартных настроек недостаточно и требуется жестко задать положение ячеек (как в макете печатной формы), мы используем вкладку «Макеты». Это самый гибкий, но и самый трудозатратный метод.
Выполним следующие действия:
Контрагент или Номенклатура).Заголовок или Тело.Чтобы данные выводились горизонтально, в макете заголовка и макете самой группировки создаются области, которые система компоновки будет «склеивать» по горизонтали при выводе каждой строки. Для этого в параметрах ячейки нужно указать заполнение Параметр и в свойствах макета сопоставить этот параметр с полем из набора данных.
Пример настройки макета для вывода дополнительных колонок в конце:
// В макете создаем область "Детали"
// В ячейках области указываем параметры: [Номенклатура], [Количество], [Максимум]
// СКД при выводе каждой строки будет подставлять значения в эти ячейки,
// сохраняя заданное нами горизонтальное расположение.
Иногда, чтобы заставить группировки выстраиваться в ряд, мы можем использовать тип группировки «Горизонтально». Посмотрим на этот прием подробнее:
Если создать родительскую группировку (даже без указания поля, просто пустую) и в её дополнительных настройках установить свойство «Расположение группировок» — «Горизонтально», то все дочерние группировки, добавленные внутрь неё, выстроятся в один ряд слева направо, а не сверху вниз. Это позволяет комбинировать в одной строке данные из разных наборов данных или разные срезы информации.
Проанализируем, как это выглядит в структуре:
В такой конфигурации Группировка 2 окажется справа от Группировки 1, что и является целью нашей задачи.
Для достижения горизонтального расположения элементов в СКД мы проанализировали пять подходов. Выбор конкретного метода зависит от сложности отчета:
Совместное использование этих инструментов позволяет реализовать практически любой макет отчета, требуемый бизнес-пользователями, сохраняя при этом все преимущества автоматического расчета итогов и расшифровок в СКД.