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

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

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

Выясняем причину: как автополя ломают структуру колонок

Для начала давайте разберемся, почему вложенная группировка внезапно «улетает» в самый конец таблицы, оказываясь правее колонок с ресурсами (такими как сумма, количество и др.).

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

Проблема возникает в тот момент, когда выполняются два условия:

  1. На уровне всего отчета (или родительской группировки) отключена автопозиция ресурсов (вкладка «Другие настройки» -> параметр Авто позиция ресурсов установлен в значение Не использовать).
  2. В списке выбранных полей ресурсы физически расположены перед какими-то обычными (группировочными) полями или реквизитами.

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


Способ 1. Полный отказ от автополей во вложенных группировках (Основное решение)

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

  1. Откроем схему компоновки данных и перейдем на вкладку «Настройки».
  2. В дереве структуры отчета выберем нужную вложенную группировку (которая смещается вправо).
  3. В нижней части окна перейдем на вкладку «Выбранные поля».
  4. Снимем флаг «Использовать родительские настройки» (или удалим системный элемент Авто из списка выбранных полей этой группировки).
  5. Вручную перетащим из левого списка доступных полей только те поля и ресурсы, которые действительно должны отображаться на данном уровне группировки.
  6. Критически важный шаг: проверим порядок полей. Он должен быть строго одинаковым на всех уровнях группировок! Сначала должны идти поля группировок (слева направо в порядке их вложенности), и только в самом конце — поля ресурсов.

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


Способ 2. Использование логических групп выбранных полей

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

  1. На вкладке «Выбранные поля» (для отчета или конкретной группировки) нажмем правую кнопку мыши и выберем пункт «Новая группа выбранных полей».
  2. В свойствах созданной группы укажем понятное имя и установим параметр «Расположение» в значение Вместе или Горизонтально.
  3. Перетащим внутрь этой группы необходимые группировочные поля и соответствующие им ресурсы.

Помещение элементов в такую логическую папку заставляет СКД рассматривать их как единый неделимый блок колонок. Это предотвращает «выталкивание» отдельных столбцов в конец таблицы.


Способ 3. Корректная настройка параметра «Авто позиция ресурсов»

Параметр Авто позиция ресурсов отвечает за то, в каком месте отчета будут выводиться числовые показатели (ресурсы). Нам нужно убедиться, что этот параметр согласован на всех уровнях отчета:

  1. Перейдем на вкладку «Другие настройки» для всего отчета.
  2. Найдем параметр Авто позиция ресурсов. Доступны следующие варианты:
    • После всех полей — ресурсы выводятся в самом конце (самый безопасный режим по умолчанию).
    • Не использовать — позволяет выводить ресурсы в любом месте среди обычных полей, но требует ручного контроля порядка во всех вложенных группировках.
    • Располагать у группировок — ресурсы выводятся непосредственно под/рядом с той группировкой, к которой они относятся.
  3. Если мы устанавливаем значение Не использовать на уровне отчета, мы обязаны зайти в «Другие настройки» каждой подчиненной группировки и убедиться, что там этот параметр либо наследуется, либо также установлен в значение Не использовать. Если на каком-то уровне настройка сбросится на значение по умолчанию, структура колонок будет искажена.

Способ 4. Управление расположением реквизитов группировок

Иногда вложенные колонки — это не самостоятельные группировки, а дополнительные реквизиты (например, когда мы выводим поле Контрагент.ОсновнойДоговор или Номенклатура.Артикул). Чтобы они не улетали в конец отчета, выполним следующую настройку:

  1. В «Других настройках» найдем параметр «Расположение реквизитов».
  2. Установим значение Отдельно (чтобы реквизиты выводились в собственных колонках) или Вместе с владельцем (чтобы они выводились в одной ячейке через запятую).
  3. Если выбрано значение Отдельно, перейдем в список «Выбранные поля» и явно зададим их порядок: сначала основное поле (например, Контрагент), затем его реквизит (Контрагент.ОсновнойДоговор), и только после этого — ресурсы.

Способ 5. Настройка параметра «Расположение полей группировок»

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


Практический пример настройки

Давайте разберем конкретную ситуацию. Предположим, у нас есть отчет со следующей структурой:

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

Если мы оставим для группировки Номенклатура выбранные поля в значении Авто, то при формировании колонка Номенклатура улетит в самый конец, а иерархия сломается.

Как мы решим эту задачу по шагам:

  1. Для группировки Подразделение в выбранных полях указываем:
    • Подразделение
    • СуммаОборот
  2. Для вложенной группировки Номенклатура отключаем автополя (снимаем флаг «Использовать родительские настройки») и вручную настраиваем список выбранных полей в следующем порядке:
    • Номенклатура
    • СуммаОборот
  3. В «Других настройках» отчета проверяем, чтобы параметр Авто позиция ресурсов был установлен в значение Не использовать.

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

← На главную