Как сохранить порядок колонок в СКД при отключении ресурсов в группировках?

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

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

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

Выясняем причину: почему ломается порядок колонок в СКД?

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

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

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

Способ 1. Отключение автопозиции ресурсов (универсальный и самый быстрый метод)

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

Выполним следующие действия по шагам:

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

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

Способ 2. Ограничение расчета ресурса на вкладке «Ресурсы»

Если показатель Цена определен в схеме компоновки данных как ресурс, мы можем управлять его расчетом на уровне схемы. Это позволит нам вообще не трогать выбранные поля в настройках группировки Сотрудник, а решить задачу на уровне бизнес-логики расчета данных.

Предположим, что ресурс Цена рассчитывается по следующей классической формуле:


Выбор 
    Когда Сумма(Количество) = 0 Тогда 0 
    Иначе Сумма(Сумма) / Сумма(Количество) 
Конец

Чтобы исключить расчет и вывод этого ресурса для сотрудников, выполним следующие шаги:

  1. Перейдем на вкладку «Ресурсы» в конструкторе схемы компоновки данных.
  2. Найдем строку с полем Цена.
  3. Обратим внимание на колонку «Рассчитывать по...». По умолчанию там пусто, что означает расчет по всем доступным группировкам отчета.
  4. Нажмем на эту ячейку и вручную выберем только те группировки, для которых расчет цены имеет смысл: Номенклатура, Документ, а также при необходимости Общие итоги.
  5. Группировку Сотрудник оставляем невыбранной.

При таком подходе колонка Цена визуально останется на своем законном месте в общей таблице отчета (порядок колонок не нарушится), но на строках с группировкой по сотрудникам ячейки цены будут оставаться абсолютно пустыми, что полностью решает поставленную задачу.

Способ 3. Использование тонкой настройки Условного форматирования

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

Проанализируем этот метод и настроим его по шагам:

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

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

Способ 4. Полный отказ от использования «Автополя» в группировках

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

Разберем этот процесс по шагам:

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

Этот способ требует чуть больше времени на настройку, однако он полностью исключает влияние алгоритмов автоматического позиционирования платформы 1С и гарантирует, что колонки в отчете всегда будут выводиться ровно в том порядке, который был жестко задан разработчиком.

← На главную