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

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

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

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

Способ 1. Преобразование реквизитов в псевдоресурсы

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

Разберем алгоритм настройки:

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

Посмотрим на пример выражения для строкового поля (например, «Комментарий»), которое нужно вывести как ресурс:

Максимум(Представление(Комментарий))

Способ 2. Отключение автоматической позиции ресурсов

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

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

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

Способ 3. Группировка полей для предотвращения «слипания»

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

  1. В окне Выбранные поля выделим поля, которые должны стоять рядом.
  2. Нажмем правой кнопкой мыши и выберем Сгруппировать выбранные поля.
  3. В настройках созданной группы установим Тип группы — Горизонтальная.
  4. Важный момент: убедимся, что параметр Расположение установлен в значение Отдельно (или просто убедимся, что не стоит флаг «Располагать вместе»).

Это позволит нам визуально объединить, например, блок данных «Цена и Валюта» под одной шапкой, сохранив при этом разделение по колонкам.

Способ 4. Использование вычисляемых полей

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

Создадим вычисляемое поле с тем же именем, но, например, с префиксом Псевдо_Цена. В выражении просто укажем путь к исходному полю — Цена. Далее добавим это вычисляемое поле в ресурсы. В выражении ресурса укажем:

ЕстьNULL(Максимум(Псевдо_Цена), 0)

Таким образом, основное поле Цена останется доступным как реквизит, а Псевдо_Цена станет полноценным ресурсом, который можно «тусовать» между другими суммами в настройках отчета.

Способ 5. Подмена текста через Условное оформление

Выясним причину, по которой иногда программисты избегают создания ресурсов — это некрасивые пустые строки в итогах или случайное суммирование. Существует «хитрый» способ через Условное оформление:

  1. Создадим в схеме «пустой» ресурс (например, поле с выражением 0).
  2. В настройках отчета перейдем в Условное оформление.
  3. Добавим новое оформление, где выберем область — нашу колонку-пустышку.
  4. В свойстве Текст нажмем на кнопку выбора и вместо статичного текста выберем Поле компоновки данных, указав наш реквизит (например, Артикул).

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

Резюме

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

← На главную