Как в Универсальном отчете вывести группировки в разных колонках?

Программист 1С v8.3 (Обычные формы) Управленческий учет
← На главную

При работе с типовыми конфигурациями на базе обычных форм, такими как Управление производственным предприятием (УПП) 1.3, специалисты часто сталкиваются с особенностями работы Универсального отчета. Одной из наиболее частых задач является изменение визуального представления группировок. По умолчанию 1С выводит иерархические группировки (например, Контрагент -> Номенклатура) в одной колонке в виде «лесенки». Однако для последующей обработки данных в Excel или по требованию заказчика часто требуется «плоская» таблица, где каждая группировка занимает отдельный столбец.

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

Метод 1: Использование детальных записей и дополнительных полей

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

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

  1. Откроем настройки отчета на вкладке Группировки.
  2. Удалим или отключим все текущие группировки строк (например, Контрагент и Номенклатура).
  3. Перейдем на вкладку Дополнительные поля.
  4. Добавим необходимые нам поля (Контрагент, Номенклатура) в список выбранных полей.
  5. В настройках размещения дополнительных полей выберем вариант «В отдельных колонках».
  6. На главной панели настроек (или в настройках структуры) обязательно установим флажок «Выводить детальные записи».

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

ООО Рога и Копыта | Ручка шариковая | 1

Метод 2: Программная настройка размещения группировок

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

Разберем, как это реализовать в коде. У объекта ПостроительОтчета есть свойство РазмещениеГруппировок. Мы можем установить его программно перед формированием отчета. Рассмотрим пример кода:


// В модуле отчета найдем место, где инициализируется УниверсальныйОтчет
УниверсальныйОтчет.ПостроительОтчета.РазмещениеГруппировок = РазмещениеГруппировокПостроителяОтчета.ВОтдельныхКолонках;

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

Анализ проблем при использовании дополнительных полей

Часто программисты сталкиваются с ситуацией, когда поле (например, Контрагент) добавлено в дополнительные поля, но не отображается в отчете. Выясним причину этой проблемы. В Построителе отчета существует ограничение: одно и то же поле не может одновременно выступать и в роли группировки, и в роли дополнительного поля в некоторых режимах вывода.

Если вы пытаетесь вывести поле, которое уже задействовано в УниверсальныйОтчет.ДобавитьИзмерениеСтроки(), построитель может его игнорировать в секции дополнительных полей. Поэтому для реализации Метод 1 крайне важно сначала исключить поле из списка измерений.

Почему переход на СКД может давать «кривые» итоги?

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

Для корректного расчета итогов в СКД необходимо:

Если эти настройки не выполнены, СКД будет просто суммировать остатки по всем строкам, что приведет к завышенным суммам при наличии нескольких группировок (дублирование итогов).

Резюме

Для получения плоского отчета в Универсальном отчете наиболее эффективны два пути:

  1. Для пользователей: Вывод через дополнительные поля при включенных детальных записях и отключенных группировках.
  2. Для разработчиков: Установка свойства УниверсальныйОтчет.ПостроительОтчета.РазмещениеГруппировок в значение ВОтдельныхКолонках.

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

← На главную