При разработке отчетов на Системе компоновки данных (СКД) программисты часто сталкиваются со стандартным поведением платформы: система стремится разделить данные на блоки. Сначала выводятся все поля группировок (обычные реквизиты), а затем — все числовые показатели (ресурсы). Однако в сложных управленческих отчетах часто требуется иной порядок, например: Номенклатура — Единица измерения — Количество — Цена — Сумма. Здесь «Цена» является обычным реквизитом, а «Количество» и «Сумма» — ресурсами. Если оставить настройки по умолчанию, 1С выведет «Цену» в начале, а ресурсы — в конце.
Рассмотрим по шагам, как преодолеть это ограничение и настроить вывод полей в произвольном порядке, сохраняя при этом структуру и читаемость отчета.
Проанализируем механику работы СКД. Порядок полей в «Выбранных полях» игнорируется для ресурсов, если включена их автоматическая позиция. Самый надежный способ заставить реквизит (например, цену или артикул) стоять между суммами — это официально объявить его ресурсом на соответствующей закладке схемы компоновки.
Разберем алгоритм настройки:
Цена) в список ресурсов.Сумма(Цена) пропишем агрегатную функцию, которая подходит для строковых или неповторяющихся данных. Для цен или характеристик идеально подходят Максимум(Цена) или Минимум(Цена).Номенклатура).Посмотрим на пример выражения для строкового поля (например, «Комментарий»), которое нужно вывести как ресурс:
Максимум(Представление(Комментарий))
Даже если мы сделали поле ресурсом, СКД может продолжать группировать его в конце списка. Чтобы получить полный контроль над порядком колонок, необходимо изменить системные настройки вывода.
Проанализируем ситуацию: на закладке Настройки выберем нужную группировку или весь отчет. Перейдем на вкладку Другие настройки. Найдем параметр Авто позиция ресурсов. По умолчанию он установлен в значение «После полей группировок». Нам необходимо установить его в положение Не использовать.
После этого СКД будет выводить колонки строго в том порядке, в котором они перечислены в списке Выбранные поля. Теперь мы можем перемещать ресурсы и обычные поля вверх и вниз, формируя нужную структуру отчета.
Иногда при отключении автопозиции возникает проблема: несколько полей группировки начинают выводиться в одной ячейке через запятую или группироваться в одну колонку. Чтобы каждое поле занимало отдельный столбец, выполним следующие действия:
Горизонтальная.Отдельно (или просто убедимся, что не стоит флаг «Располагать вместе»).Это позволит нам визуально объединить, например, блок данных «Цена и Валюта» под одной шапкой, сохранив при этом разделение по колонкам.
Если мы не хотим менять логику основных полей набора данных, можно воспользоваться Вычисляемыми полями. Рассмотрим этот вариант подробнее:
Создадим вычисляемое поле с тем же именем, но, например, с префиксом Псевдо_Цена. В выражении просто укажем путь к исходному полю — Цена. Далее добавим это вычисляемое поле в ресурсы. В выражении ресурса укажем:
ЕстьNULL(Максимум(Псевдо_Цена), 0)
Таким образом, основное поле Цена останется доступным как реквизит, а Псевдо_Цена станет полноценным ресурсом, который можно «тусовать» между другими суммами в настройках отчета.
Выясним причину, по которой иногда программисты избегают создания ресурсов — это некрасивые пустые строки в итогах или случайное суммирование. Существует «хитрый» способ через Условное оформление:
0).Артикул).В результате система выделит место под ресурс, но благодаря оформлению в этой колонке будет отображаться значение обычного поля. Это позволяет вставлять текстовые данные в любую часть блока ресурсов.
Для достижения идеального результата рекомендуем комбинировать Способ 1 и Способ 2. Превращение реквизитов в ресурсы с агрегатами Максимум или Минимум в сочетании с отключением Авто позиции ресурсов дает максимальную гибкость. Мы рассмотрели основные техники, которые позволяют обойти стандартные механизмы компоновки и сделать отчет максимально удобным для пользователя.