Как вывести группировку или поле в самом конце отчета СКД после всех колонок-ресурсов?

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

При разработке отчетов на базе Системы компоновки данных (СКД) часто возникает специфическая задача по оформлению кросс-таблиц. Типичный сценарий: в строках у нас «Номенклатура», в колонках — «Партнеры», а в пересечении — показатели (количество, сумма). По умолчанию СКД выводит все реквизиты группировки (например, «Артикул», «Ед. изм.») в левой части отчета, до того как начнут выводиться динамические колонки партнеров. Однако заказчики часто просят вывести информационные поля (тот же «Артикул») в самом конце, после всех колонок с партнерами и их итогами. Давайте разберем, как реализовать это стандартными средствами без привлечения собственных макетов.

Способ №1: Управление настройкой «Авто позиция ресурсов»

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

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

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

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

В окне «Выбранные поля» появится специальный элемент — системная группа «Ресурсы». Чтобы добиться нужного результата (Артикул в конце), нам нужно выстроить структуру следующим образом:

Таким образом, система сначала выведет название номенклатуры, затем развернет все колонки ресурсов по партнерам, и только потом добавит колонку артикула.

Способ №2: Использование «Ложного ресурса»

Иногда отключение автопозиции ресурсов может привести к нежелательным изменениям в оформлении других частей отчета. В таких случаях мы можем воспользоваться профессиональным приемом — превращением обычного реквизита в ресурс. Выясним, как это реализовать.

Рассмотрим алгоритм действий:

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

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

Особенности условного оформления при ручной позиции ресурсов

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

Разберем, как правильно настроить оформление в этом режиме:

Если вы хотите выделить всю строку цветом по определенному условию, в списке «Оформляемые поля» недостаточно будет просто оставить пустое место или выбрать «Везде». Часто приходится явно перечислять все колонки, включая ресурсы и добавленные в конец реквизиты. Если этого не сделать, оформление может примениться только к части строки, создавая визуальный разрыв.

Проблема дублирования и пустых колонок в кросс-таблицах

При выводе реквизита после динамических колонок в кросс-таблице (где колонки — это Партнеры) есть риск получить неприятный эффект: «Артикул» начнет выводиться для каждого Партнера отдельно, создавая множество лишних столбцов. Для решения этой задачи можно использовать пример настройки вывода ресурса только в одной колонке без дублирования.

Чтобы избежать этого и сделать так, чтобы «Артикул» шел один раз в самом конце всей таблицы, выполним следующие настройки структуры:

Использование вычисляемых полей для оптимизации

Иногда, чтобы не загромождать правую часть отчета множеством отдельных колонок (Артикул, Ед. изм., Вес), разумно объединить их в одно вычисляемое поле. Посмотрим на пример выражения для такого поля:

Строка(Артикул) + " (" + Строка(ЕдИзм) + ")"

Такое поле, выведенное в конце отчета, позволит пользователю видеть всю справочную информацию в одной компактной ячейке, не заставляя его прокручивать экран далеко вправо.

Влияние на общие итоги

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

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

← На главную