При разработке отчетов на Системе компоновки данных (СКД) в 1С программисты часто сталкиваются с необходимостью тонкой настройки внешнего вида таблиц. Использование стандартного оформления не всегда удовлетворяет требованиям заказчика, и тогда на помощь приходят индивидуальные макеты. Однако здесь подстерегают две классические проблемы: параметры в созданном макете группировки выводятся абсолютно пустыми (за исключением представления самой ссылки), а над вашим красивым макетом СКД упорно выводит стандартный системный заголовок группировки вида «Ссылка: [Значение]».
В этой статье мы подробно разберем природу этих проблем, проанализируем механизмы работы компоновщика макета СКД и пошагово настроим отчет так, чтобы параметры заполнялись корректно, а лишние элементы интерфейса не мозолили глаза пользователю.
Для начала проанализируем, как СКД обрабатывает данные на разных уровнях отчета. Когда мы создаем группировку по какому-либо полю (например, по полю Ссылка, указывающему на документ или элемент справочника), система группирует детальные записи.
Если в макете этой группировки мы хотим вывести реквизиты этого объекта (например, Ссылка.Организация, Ссылка.Дата, Ссылка.СуммаДокумента), СКД на уровне группировки считает их детальными полями. По умолчанию платформа «не знает», какое именно значение из детальных записей нужно вывести в параметре макета на уровне группировки. Даже если в группе по факту находится всего одна детальная запись, для универсального механизма компоновки это не очевидно. В результате при формировании отчета все параметры макета, кроме непосредственного поля группировки или его представления, остаются незаполненными.
Рассмотрим подробнее три основных способа решения проблемы с пустыми параметрами макета.
Чтобы данные успешно попадали в ячейки вашего макета, воспользуемся одним из следующих подходов в зависимости от структуры вашего запроса и требований к отчету.
Способ 1. Добавление реквизитов в поля группировки
Самый простой и быстрый способ сделать реквизиты доступными в макете — добавить их непосредственно в список полей группировки СКД.
Ссылка).Ссылка.Организация, Ссылка.Контрагент).Как только поле попадает в список полей группировки, СКД рассчитывает его значение для этого уровня, и оно гарантированно становится доступным для вывода в параметры макета.
Способ 2. Использование механизмов ресурсов
Если по каким-то причинам вы не хотите группировать данные по этим дополнительным полям (например, чтобы не усложнять структуру иерархии), мы можем объявить нужные реквизиты ресурсами.
Организация).Максимум(Организация) или Минимум(Организация).Поскольку значение организации внутри одного документа всегда единственное, функции Максимум или Минимум вернут корректное значение. После этого поле станет доступно на уровне группировки как ресурс и успешно отобразится в макете.
Способ 3. Явное указание выражений на вкладке «Макеты»
Очень часто разработчики забывают связать параметры ячеек макета с реальными полями схемы компоновки. Разберем по шагам, как это исправить:
Организация).Ссылка, то выражение должно выглядеть как Ссылка.Организация или просто Организация (если оно добавлено в ресурсы или группировки). Если оставить эту колонку пустой, СКД просто проигнорирует параметр, и ячейка в отчете останется пустой.Перейдем ко второй проблеме. Очень часто при выводе отчета над созданным макетом выводится стандартная строка СКД (например, заголовок группировки «Ссылка» и значение этой ссылки). Нам необходимо сделать так, чтобы выводился исключительно наш пользовательский макет.
Для этого нам потребуется выполнить комплексную настройку выбранных полей и других параметров конкретной группировки. Проанализируем алгоритм действий.
Давайте закрепим полученные знания на практическом примере. Представим, что у нас есть отчет по продажам. Мы хотим сгруппировать данные по документу продажи (поле Ссылка), вывести красивую «шапку» для каждого документа с его датой и организацией из нашего макета, а ниже вывести детальные строки товаров.
Для начала напишем простой запрос в схеме компоновки данных:
ВЫБРАТЬ
ПродажиОбороты.Регистратор КАК Ссылка,
ПродажиОбороты.Регистратор.Организация КАК Организация,
ПродажиОбороты.Регистратор.Дата КАК Дата,
ПродажиОбороты.Номенклатура КАК Номенклатура,
ПродажиОбороты.КоличествоОборот КАК Количество,
ПродажиОбороты.СуммаОборот КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ПродажиОбороты
Выполним настройку структуры отчета:
Ссылка. Дадим этой группировке имя в свойствах: ГруппировкаДокумент.Ссылка добавим детальные записи (или группировку по полю Номенклатура).Ссылка (наша ГруппировкаДокумент):
Теперь создадим и привяжем макет:
ГруппировкаДокумент. Тип макета выберем как «Заголовок».Документ: [Ссылка] от [Дата] (Организация: [Организация]). Настроим тип заполнения этой ячейки как «Шаблон».Ссылка, Дата, Организация.Ссылка выражение: СсылкаДата выражение: Ссылка.ДатаОрганизация выражение: Ссылка.ОрганизацияЗапустим отчет в режиме «1С:Предприятие». Мы увидим, что для каждого документа формируется красивый заголовок, параметры Дата и Организация заполнены корректно, а стандартный системный заголовок группировки полностью скрыт.
Мы детально проанализировали особенности работы компоновщика макетов СКД. Подводя итог, выделим главные правила успешной работы с макетами:
Следуя этим правилам, вы сможете создавать отчеты любой сложности с уникальным и аккуратным дизайном интерфейса.