Как исправить ошибку с незаполненными параметрами макета группировки СКД и скрыть стандартный заголовок?

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

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

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

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

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

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

Рассмотрим подробнее три основных способа решения проблемы с пустыми параметрами макета.

Решение проблемы №1: Правильная передача параметров в макет группировки

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

Способ 1. Добавление реквизитов в поля группировки

Самый простой и быстрый способ сделать реквизиты доступными в макете — добавить их непосредственно в список полей группировки СКД.

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

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

Способ 2. Использование механизмов ресурсов

Если по каким-то причинам вы не хотите группировать данные по этим дополнительным полям (например, чтобы не усложнять структуру иерархии), мы можем объявить нужные реквизиты ресурсами.

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

Поскольку значение организации внутри одного документа всегда единственное, функции Максимум или Минимум вернут корректное значение. После этого поле станет доступно на уровне группировки как ресурс и успешно отобразится в макете.

Способ 3. Явное указание выражений на вкладке «Макеты»

Очень часто разработчики забывают связать параметры ячеек макета с реальными полями схемы компоновки. Разберем по шагам, как это исправить:

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

Решение проблемы №2: Скрытие стандартного заголовка группировки

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

Для этого нам потребуется выполнить комплексную настройку выбранных полей и других параметров конкретной группировки. Проанализируем алгоритм действий.

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

Пошаговый практический пример реализации сложного макета

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

Для начала напишем простой запрос в схеме компоновки данных:


ВЫБРАТЬ
    ПродажиОбороты.Регистратор КАК Ссылка,
    ПродажиОбороты.Регистратор.Организация КАК Организация,
    ПродажиОбороты.Регистратор.Дата КАК Дата,
    ПродажиОбороты.Номенклатура КАК Номенклатура,
    ПродажиОбороты.КоличествоОборот КАК Количество,
    ПродажиОбороты.СуммаОборот КАК Сумма
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ПродажиОбороты

Выполним настройку структуры отчета:

  1. На вкладке «Настройки» добавим группировку по полю Ссылка. Дадим этой группировке имя в свойствах: ГруппировкаДокумент.
  2. Внутрь группировки Ссылка добавим детальные записи (или группировку по полю Номенклатура).
  3. Перейдем в настройки группировки Ссылка (наша ГруппировкаДокумент):
    • На вкладке «Выбранные поля» отключаем авто-поля и очищаем список.
    • На вкладке «Другие настройки» устанавливаем «Расположение группировок» в значение «Нет».

Теперь создадим и привяжем макет:

  1. Перейдем на вкладку «Макеты». Добавим новый макет группировки.
  2. В появившемся окне укажем имя нашей группировки: ГруппировкаДокумент. Тип макета выберем как «Заголовок».
  3. Определим область ячеек в сетке табличного документа для нашего макета (например, две строки).
  4. В ячейках напишем текст шаблонов. Например, в одной из ячеек напишем: Документ: [Ссылка] от [Дата] (Организация: [Организация]). Настроим тип заполнения этой ячейки как «Шаблон».
  5. В нижней таблице параметров СКД автоматически создаст параметры: Ссылка, Дата, Организация.
  6. Пропишем для них выражения связи:
    • Для параметра Ссылка выражение: Ссылка
    • Для параметра Дата выражение: Ссылка.Дата
    • Для параметра Организация выражение: Ссылка.Организация

Запустим отчет в режиме «1С:Предприятие». Мы увидим, что для каждого документа формируется красивый заголовок, параметры Дата и Организация заполнены корректно, а стандартный системный заголовок группировки полностью скрыт.

Заключение и важные рекомендации

Мы детально проанализировали особенности работы компоновщика макетов СКД. Подводя итог, выделим главные правила успешной работы с макетами:

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

← На главную