К статье
Практический материал

Отчеты и Аналитика · 11 мин

Как создать макет в СКД 1С

Как создать макет в СКД 1С: виды макетов, конструктор настроек, области, параметры, примеры кода и типичные ошибки при программном формировании отчёта.

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

Макеты нужны, когда стандартного автоматического формирования недостаточно: требуется фиксированная шапка с реквизитами организации, нестандартная группировка строк, итоги в особом виде или печатная форма документа, собранная на СКД. Без макета СКД сама решает, какие колонки и в каком порядке вывести, и управлять этим можно только настройками.

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

Что такое макет в СКД и когда он нужен

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

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

  • нужна фиксированная шапка отчёта с логотипом, названием организации и реквизитами;
  • требуется особый порядок или объединение ячеек, недостижимый настройками;
  • итоги по ресурсам должны выводиться в нестандартном виде, например с текстовой подписью;
  • отчёт используется как печатная форма с жёстко заданной структурой;
  • нужно вывести поле с оформлением, отличным от стандартного (цвет, шрифт, рамки).

Виды макетов в схеме компоновки данных

СКД поддерживает несколько типов макетов, и выбор типа определяет, какую часть результата вы переопределяете. Неправильно выбранный тип — самая частая причина того, что макет «не работает».

Тип макетаЧто переопределяетКогда применять
Макет поляОформление отдельного поля во всех строкахОсобый формат числа, цвет, вывод картинки вместо значения
Макет группировкиСтроки группировки (заголовки и значения групп)Нестандартная шапка группы, объединение нескольких полей в одну ячейку
Макет ресурсовЯчейки итогов по ресурсамПодписи «Итого», особое оформление сумм по группам
Общий макетВесь результат целикомПолностью ручная структура отчёта, печатные формы
Макет заголовка/подвала группировкиСтроки перед и после детальных записей группыШапка таблицы внутри каждой группы

Общий макет — самый трудоёмкий вариант: при его использовании вы берёте на себя вывод всех областей, включая детальные записи. Начинать освоение удобнее с макета группировки или поля, где СКД продолжает делать большую часть работы сама.

Сравнение вариантов

Макет поля или группировки

Подходит для точечной настройки оформления; СКД сама выводит остальное. Ограничение — нельзя изменить общую структуру результата.

Общий макет

Полный контроль над структурой, подходит для печатных форм. Ограничение — все области нужно описать и вывести вручную, выше риск ошибок.

Без макета, только настройки

Подходит для аналитических отчётов; быстрее всего. Ограничение — внешний вид определяется платформой.

Создание макета в конструкторе СКД

Макет создаётся внутри схемы компоновки данных, поэтому сначала должна быть подготовлена сама схема: набор данных с запросом, ресурсы и хотя бы базовые настройки. Дальнейшие действия выполняются в конфигураторе.

Порядок создания макета
  1. 1
    Откройте схему компоновки данных отчёта и перейдите на закладку «Макеты».
  2. 2
    Нажмите «Добавить» и выберите тип макета, например «Макет группировки».
  3. 3
    Укажите имя группировки, для которой создаётся макет (должно совпадать с именем в настройках).
  4. 4
    В табличном документе макета нарисуйте шаблон: введите тексты, задайте оформление ячеек.
  5. 5
    Выделите ячейки, куда должны подставляться данные, и задайте им тип заполнения «Параметр» с именем поля или «Шаблон» с выражением в квадратных скобках.
  6. 6
    Создайте области: выделите строки и задайте им имена через свойства области макета.
  7. 7
    Сохраните схему и сформируйте отчёт для проверки результата.

Ключевой момент — тип заполнения ячейки. Вариант «Текст» выводит значение как есть. «Параметр» подставляет значение одноимённого параметра макета, который СКД связывает с полем данных. «Шаблон» позволяет смешивать текст и значения: например, Контрагент: [Контрагент], договор [Договор] — выражения в квадратных скобках вычисляются при выводе.

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

Области и параметры макета

Область — это именованный фрагмент макета, который выводится как единое целое. Для макета группировки типично создают области «Заголовок» и «Подвал»; для общего макета набор областей полностью определяется разработчиком: «Шапка», «Строка», «Итог» и т.д.

Параметры макета связываются с полями данных автоматически по имени: если в ячейке указан параметр «Сумма» и в наборе данных есть ресурс «Сумма», значение подставится без дополнительных действий. Для вычисляемых значений используйте ячейки с типом «Шаблон» и выражениями на языке выражений СКД.

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

Программное формирование отчёта с макетом

Если отчёт формируется программно (из внешней обработки, команды, фонового задания), последовательность работы с макетом выглядит так: схема загружается в компоновщик макета, из него получается готовый макет компоновки, который затем поэлементно выводится процессором вывода в табличный документ.

bsl
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
Результат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);

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

Проверка результата и типичные ошибки

После создания макета сформируйте отчёт с разными наборами данных: с одной строкой, с несколькими группами и с пустым результатом. Макет, корректно работающий на одном примере, часто «ломается» на граничных случаях — например, шапка группы выводится даже при отсутствии детальных записей.

Контрольные точки

Как проверить результат

Подстановка значений
Норма

Все параметры заполнены данными из набора

Тревожный признак

Пустые ячейки там, где должны быть значения — проверьте имена параметров

Привязка макета
Норма

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

Тревожный признак

Стандартный вывод — имя группировки в макете не совпадает с настройками

Итоги по ресурсам
Норма

Суммы в макете совпадают с итогами без макета

Тревожный признак

Расхождения — параметр связан не с тем ресурсом

Пустой результат
Норма

Отчёт выводит осмысленную шапку или сообщение

Тревожный признак

Обрыв вывода или ошибка при отсутствии данных

Типичные ошибки
01
Несовпадение имени группировки в макете и в настройках — макет молча игнорируется.
02
Параметр макета назван иначе, чем поле в запросе — ячейки выводятся пустыми без сообщения об ошибке.
03
Ячейке задан тип «Текст» вместо «Параметр» — в результат попадает литеральная строка вместо значения.
04
Использование общего макета там, где достаточно макета группировки, — лишняя сложность и трудоёмкая поддержка.
05
Изменение макета без проверки на разных данных — ошибки всплывают только у пользователей на реальных объёмах.

Когда макет не нужен: альтернативы

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

Правило простое: если задача решается настройками — не создавайте макет. Каждый макет увеличивает стоимость поддержки отчёта, потому что при изменении набора данных придётся синхронно править и шаблон.

Итог

Что важно запомнить

Макет в СКД создаётся на закладке «Макеты» схемы компоновки: выбирается тип макета, рисуется шаблон, ячейкам задаются параметры и области. Имена группировок и параметров должны точно совпадать с настройками и полями данных. Используйте макет только там, где настроек и условного оформления недостаточно.

Частые вопросы

Почему макет группировки игнорируется при формировании отчёта?

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

Как вывести в макете значение параметра отчёта, а не поля данных?

Используйте ячейку с типом заполнения «Шаблон» и обращением к параметру через выражение, например Отчёт за период с [&НачалоПериода], либо вычисляемое поле в схеме, которое возвращает значение параметра, и свяжите с ним параметр макета.

Можно ли редактировать макет в режиме предприятия без конфигуратора?

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

Чем макет СКД отличается от обычного табличного макета?

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

Как вывести картинку или логотип в макете СКД?

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

Почему в макете пустые ячейки вместо итогов по ресурсам?

Проверьте, что ресурс объявлен на закладке «Ресурсы» схемы и рассчитывается для нужной группировки, а имя параметра в макете совпадает с именем ресурса. Если группировка выводится без детальных записей, убедитесь, что итоги по группе включены в настройках — иначе значения ресурсов для неё не вычисляются.