При разработке отчетов в Системе Компоновки Данных (СКД) часто возникает необходимость строго контролировать порядок вывода колонок, особенно если речь идет о полях, определенных как ресурсы. По умолчанию СКД стремится разместить ресурсы после всех полей измерений, что не всегда соответствует требуемой структуре отчета. Рассмотрим эту проблему подробнее и выясним, как ее решить.
Наш пользователь столкнулся с ситуацией, когда требовалось вывести поля в порядке: Номенклатура, Сумма, Валюта, но отчет выводил: Номенклатура, Валюта, Сумма. При этом Сумма является ресурсом. Разберем, как мы можем настроить желаемый порядок, не прибегая к программному коду в обработчике ПередКомпоновкойМакета.
Одним из ключевых параметров, влияющих на расположение полей-ресурсов, является "Авто позиция ресурсов". По умолчанию, этот параметр активен, и СКД самостоятельно определяет место для ресурсов, обычно помещая их в конец таблицы или группы. Чтобы получить полный контроль над порядком, нам необходимо отключить эту автоматическую расстановку.
После отключения автоматической позиции ресурсов, СКД будет следовать порядку, который вы зададите на вкладке "Выбранные поля".
После того как мы отключили "Авто позиция ресурсов", следующим шагом является установка нужного порядка полей на вкладке "Выбранные поля". Именно здесь вы определяете, какие поля будут отображаться в отчете и в какой последовательности.
Мы должны убедиться, что поля расположены в желаемом порядке: Номенклатура, Сумма, Валюта. Перетаскивайте поля вверх или вниз с помощью стрелок или drag-and-drop, пока они не окажутся в нужной последовательности. Если Авто позиция ресурсов отключена, СКД будет строго придерживаться этого порядка.
Пользователи подтверждают, что для простых отчетов такой подход с отключением "Авто позиция ресурсов" и настройкой порядка в "Выбранных полях" прекрасно работает. Однако, как это часто бывает в 1С, более сложные сценарии могут потребовать дополнительных усилий.
В некоторых случаях, особенно когда отчет содержит вложенные группы, сложную иерархию или требуется нестандартное оформление, простые настройки "Авто позиция ресурсов" могут оказаться недостаточными или работать некорректно. Именно здесь на помощь приходят макеты СКД.
Макеты – это самый гибкий и мощный инструмент для управления структурой и внешним видом отчета. Они позволяют нам детально "нарисовать", как будут выглядеть отдельные ячейки, строки и колонки для каждой группировки, поля или ресурса. Используя макеты, мы можем точно указать, где должен располагаться каждый элемент отчета, полностью игнорируя автоматические правила СКД по умолчанию.
Когда использовать макеты:
Для создания макетов необходимо перейти на вкладку "Макеты" в конструкторе СКД. Здесь мы можем создавать макеты для:
Работа с макетами может быть достаточно трудоемкой, но обеспечивает максимальную гибкость. Подробные примеры и рекомендации по работе с макетами вы можете найти в специализированной литературе, например, в книге Е.Ю. Хрусталевой "Разработка сложных отчетов в 1С:Предприятии 8. Система компоновки данных" в главе 5 "Макеты".
Когда мы имеем дело с вложенными группами, важно понимать, что СКД наследует настройки от родительских группировок. Кроме того, существуют другие параметры, которые могут влиять на окончательный вид отчета и порядок полей.
Рассмотрим дополнительные параметры на вкладке "Другие настройки":
Авто позиция ресурсов, существует параметр Расположение ресурсов, который определяет, как будут отображаться ресурсы, если их несколько. Мы можем выбрать:
Все эти параметры в совокупности предоставляют гибкость в управлении структурой отчета, и их комбинации могут помочь добиться желаемого результата, когда базовые настройки оказываются недостаточными.
В самых сложных и динамических сценариях, когда статическими настройками СКД не удается достичь нужного результата, или когда порядок полей должен меняться в зависимости от пользовательских условий или данных, мы можем прибегнуть к программному управлению порядком.
Программное управление осуществляется, как правило, в обработчиках событий схемы компоновки данных, таких как ПриКомпоновкеРезультата или ОбработкаРасшифровки, а также при формировании настроек СКД в коде перед выполнением отчета. Мы можем:
ВыбранныеПоля объекта НастройкиКомпоновкиДанных.Этот подход требует глубокого понимания программного интерфейса СКД и обычно используется разработчиками для создания высокодинамичных и специализированных отчетов.
Для решения проблемы с порядком полей в отчетах СКД, включая поля-ресурсы, мы рекомендуем следующий порядок действий:
Расположение полей группировок и Расположение ресурсов на вкладке "Другие настройки" для более точечной настройки.Выбирая подходящий метод, мы сможем эффективно управлять порядком вывода полей и достигать требуемой структуры отчета, делая его удобным и информативным для пользователей.