При разработке отчетов на базе Системы компоновки данных (СКД) программисты часто сталкиваются со стандартным поведением платформы: иерархические группировки выводятся в виде дерева в одной колонке. Однако бизнес-пользователи, привыкшие к работе в Excel, зачастую требуют «плоский» вид таблицы, где каждое измерение занимает свою отдельную колонку. В этой статье мы подробно разберем, как изменить стандартный вывод и настроить отчет под требования заказчика, а также решим проблему исчезающих данных при отключении итогов.
Самый быстрый и простой способ изменить вид всего отчета — воспользоваться общими настройками компоновки. Разберем этот процесс по шагам:
Отчет).После этого 1С перестанет объединять измерения в одну колонку-дерево. Каждая группировка (например, Контрагент, Договор, Заказ) получит свой собственный заголовок и отдельную колонку, как в классической таблице Excel.
Иногда нам не нужно менять весь отчет, а требуется разнести в разные колонки только определенные уровни иерархии. Проанализируем, как сделать настройку более гибкой:
В дереве настроек СКД выберем не весь отчет, а конкретную группировку. Для этой выбранной ветки также доступна вкладка Другие настройки. Если мы установим значение Отдельно именно здесь, то настройка применится только к дочерним элементам этой группы. Это позволяет создавать комбинированные отчеты, где часть данных выводится деревом, а часть — в отдельных колонках.
Стоит обратить внимание на вариант Отдельно и только в отдельных колонках. Этот режим исключает дублирование названий группировок в иерархических строках, что делает таблицу максимально «чистой» и читаемой.
Рассмотрим ситуацию, с которой часто сталкиваются разработчики (она упоминалась в сообщении №6): при попытке убрать итоги по группировкам через снятие флага «Выводить итоги», данные в колонках просто исчезают. Это происходит потому, что СКД воспринимает отключение итогов группировки как команду не выводить саму строку группировки.
Чтобы оставить названия группировок в своих колонках, но при этом убрать числовые показатели (ресурсы) из промежуточных строк, выполним следующие действия:
В этом случае строки с названиями группировок останутся на месте, обеспечивая структуру таблицы, но пустые или ненужные суммы в этих строках отображаться не будут. Если же нужно убрать только общие итоги по всему отчету, используем параметры Расположение общих итогов по горизонтали и Расположение общих итогов по вертикали.
Чтобы отчет окончательно приобрел вид Excel-таблицы, нам нужно проконтролировать, где выводятся числовые данные (ресурсы). Проанализируем параметр Расположение ресурсов в тех же Других настройках:
Если установить Расположение ресурсов = Вертикально, то все числовые показатели будут всегда находиться в колонках справа от группировок. Это исключает ситуацию, когда ресурсы «подлезают» под названия группировок, нарушая строгую табличную структуру.
Если заказчику не нужна возможность сворачивать и разворачивать узлы (плюсики слева), а нужен просто линейный список всех записей, мы можем поступить иначе:
Номенклатура, Склад), и ресурсы (Количество, Сумма).В таком режиме отчет по умолчанию будет выведен в виде плоской таблицы без каких-либо иерархических смещений, и дополнительные настройки расположения полей не потребуются.
Иногда требуется изменить поведение отчета программно, например, в зависимости от прав пользователя или выбранного варианта. Разберем пример кода, который устанавливает расположение группировок отдельно:
// Получаем настройки компоновщика данных
Настройки = КомпоновщикНастроек.Настройки;
// Устанавливаем параметр "Расположение полей группировок"
ПараметрРасположения = Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("РасположениеПолейГруппировок"));
Если ПараметрРасположения <> Неопределено Тогда
ПараметрРасположения.Значение = РасположениеПолейГруппировокКомпоновкиДанных.Отдельно;
ПараметрРасположения.Использование = Истина;
КонецЕсли;
Этот код позволяет гибко управлять внешним видом отчета непосредственно в момент его формирования в модуле объекта или форме отчета.
Выясним еще одну деталь: даже при выводе в отдельные колонки 1С может сохранять небольшой отступ (иерархический сдвиг) текста внутри ячейки. Чтобы колонки выглядели идеально ровно:
Таким образом, комбинируя настройки РасположениеПолейГруппировок, РасположениеИтогов и Автоотступ, мы получаем полный контроль над визуализацией отчета, делая его максимально удобным для пользователей, привыкших к работе с табличными процессорами.