Отчеты и Аналитика · 11 мин
Как создать макет в СКД 1С
Как создать макет в СКД 1С: виды макетов, конструктор настроек, области, параметры, примеры кода и типичные ошибки при программном формировании отчёта.
Макет в системе компоновки данных (СКД) — это заранее подготовленный шаблон, который определяет, как будет выглядеть результат отчёта: заголовки колонок, шапка, подписи итогов, оформление ячеек. В отличие от обычного табличного документа, макет СКД работает внутри механизма компоновки и подставляет в шаблон данные, полученные запросом, автоматически.
Макеты нужны, когда стандартного автоматического формирования недостаточно: требуется фиксированная шапка с реквизитами организации, нестандартная группировка строк, итоги в особом виде или печатная форма документа, собранная на СКД. Без макета СКД сама решает, какие колонки и в каком порядке вывести, и управлять этим можно только настройками.
В статье разобраны виды макетов СКД, порядок их создания в конструкторе, работа с областями и параметрами, программное формирование отчёта с макетом и типичные ошибки, из-за которых макет либо игнорируется, либо выдаёт пустой результат.
Что такое макет в СКД и когда он нужен
Макет в СКД — это описание внешнего вида результата, хранящееся внутри схемы компоновки данных. Он состоит из областей (строк, колонок, их пересечений) и параметров — именованных мест, куда при выводе подставляются значения полей данных или выражения.
Без макета СКД строит результат автоматически: берёт выбранные поля, группировки и ресурсы и выводит их в табличный документ стандартным образом. Этого достаточно для большинства отчётов. Макет понадобится в следующих случаях:
- нужна фиксированная шапка отчёта с логотипом, названием организации и реквизитами;
- требуется особый порядок или объединение ячеек, недостижимый настройками;
- итоги по ресурсам должны выводиться в нестандартном виде, например с текстовой подписью;
- отчёт используется как печатная форма с жёстко заданной структурой;
- нужно вывести поле с оформлением, отличным от стандартного (цвет, шрифт, рамки).
Виды макетов в схеме компоновки данных
СКД поддерживает несколько типов макетов, и выбор типа определяет, какую часть результата вы переопределяете. Неправильно выбранный тип — самая частая причина того, что макет «не работает».
| Тип макета | Что переопределяет | Когда применять |
|---|---|---|
| Макет поля | Оформление отдельного поля во всех строках | Особый формат числа, цвет, вывод картинки вместо значения |
| Макет группировки | Строки группировки (заголовки и значения групп) | Нестандартная шапка группы, объединение нескольких полей в одну ячейку |
| Макет ресурсов | Ячейки итогов по ресурсам | Подписи «Итого», особое оформление сумм по группам |
| Общий макет | Весь результат целиком | Полностью ручная структура отчёта, печатные формы |
| Макет заголовка/подвала группировки | Строки перед и после детальных записей группы | Шапка таблицы внутри каждой группы |
Общий макет — самый трудоёмкий вариант: при его использовании вы берёте на себя вывод всех областей, включая детальные записи. Начинать освоение удобнее с макета группировки или поля, где СКД продолжает делать большую часть работы сама.
Сравнение вариантов
Подходит для точечной настройки оформления; СКД сама выводит остальное. Ограничение — нельзя изменить общую структуру результата.
Полный контроль над структурой, подходит для печатных форм. Ограничение — все области нужно описать и вывести вручную, выше риск ошибок.
Подходит для аналитических отчётов; быстрее всего. Ограничение — внешний вид определяется платформой.
Создание макета в конструкторе СКД
Макет создаётся внутри схемы компоновки данных, поэтому сначала должна быть подготовлена сама схема: набор данных с запросом, ресурсы и хотя бы базовые настройки. Дальнейшие действия выполняются в конфигураторе.
- 1Откройте схему компоновки данных отчёта и перейдите на закладку «Макеты».
- 2Нажмите «Добавить» и выберите тип макета, например «Макет группировки».
- 3Укажите имя группировки, для которой создаётся макет (должно совпадать с именем в настройках).
- 4В табличном документе макета нарисуйте шаблон: введите тексты, задайте оформление ячеек.
- 5Выделите ячейки, куда должны подставляться данные, и задайте им тип заполнения «Параметр» с именем поля или «Шаблон» с выражением в квадратных скобках.
- 6Создайте области: выделите строки и задайте им имена через свойства области макета.
- 7Сохраните схему и сформируйте отчёт для проверки результата.
Ключевой момент — тип заполнения ячейки. Вариант «Текст» выводит значение как есть. «Параметр» подставляет значение одноимённого параметра макета, который СКД связывает с полем данных. «Шаблон» позволяет смешивать текст и значения: например, Контрагент: [Контрагент], договор [Договор] — выражения в квадратных скобках вычисляются при выводе.
Для макета группировки имя группировки в свойствах макета должно точно совпадать с именем группировки в настройках схемы. Если имена различаются, СКД просто не найдёт макет и выведет группировку стандартно — без какого-либо сообщения об ошибке.
Области и параметры макета
Область — это именованный фрагмент макета, который выводится как единое целое. Для макета группировки типично создают области «Заголовок» и «Подвал»; для общего макета набор областей полностью определяется разработчиком: «Шапка», «Строка», «Итог» и т.д.
Параметры макета связываются с полями данных автоматически по имени: если в ячейке указан параметр «Сумма» и в наборе данных есть ресурс «Сумма», значение подставится без дополнительных действий. Для вычисляемых значений используйте ячейки с типом «Шаблон» и выражениями на языке выражений СКД.
При выводе итогов по ресурсам в макете группировки СКД подставляет в параметры значения, вычисленные для текущей группы. Это позволяет, например, в шапке группы «Контрагент» сразу показать сумму по этому контрагенту, не дожидаясь подвала.
Программное формирование отчёта с макетом
Если отчёт формируется программно (из внешней обработки, команды, фонового задания), последовательность работы с макетом выглядит так: схема загружается в компоновщик макета, из него получается готовый макет компоновки, который затем поэлементно выводится процессором вывода в табличный документ.
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
Результат = Новый ТабличныйДокумент;
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(Результат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);При использовании общего макета вывод организуется иначе: вместо стандартного процессора вы перебираете элементы результата и для каждого получаете нужную область макета через МакетКомпоновки.Макеты, заполняете параметры и выводите область в табличный документ методом Вывести или Присоединить.
Проверка результата и типичные ошибки
После создания макета сформируйте отчёт с разными наборами данных: с одной строкой, с несколькими группами и с пустым результатом. Макет, корректно работающий на одном примере, часто «ломается» на граничных случаях — например, шапка группы выводится даже при отсутствии детальных записей.
Как проверить результат
Все параметры заполнены данными из набора
Пустые ячейки там, где должны быть значения — проверьте имена параметров
Группировка выводится по шаблону макета
Стандартный вывод — имя группировки в макете не совпадает с настройками
Суммы в макете совпадают с итогами без макета
Расхождения — параметр связан не с тем ресурсом
Отчёт выводит осмысленную шапку или сообщение
Обрыв вывода или ошибка при отсутствии данных
Когда макет не нужен: альтернативы
Часть задач, которые разработчики решают макетами, проще выполнить другими средствами СКД. Условное оформление в настройках отчёта меняет цвет, шрифт и формат ячеек по условию без единой строки макета. Пользовательские поля позволяют вывести вычисляемые значения. Выводимые поля и их порядок настраиваются в группировках.
Правило простое: если задача решается настройками — не создавайте макет. Каждый макет увеличивает стоимость поддержки отчёта, потому что при изменении набора данных придётся синхронно править и шаблон.
Что важно запомнить
Макет в СКД создаётся на закладке «Макеты» схемы компоновки: выбирается тип макета, рисуется шаблон, ячейкам задаются параметры и области. Имена группировок и параметров должны точно совпадать с настройками и полями данных. Используйте макет только там, где настроек и условного оформления недостаточно.
Частые вопросы
Почему макет группировки игнорируется при формировании отчёта?
Чаще всего имя группировки в свойствах макета не совпадает с именем группировки в настройках схемы, либо группировка вообще не имеет имени. Задайте группировке имя в настройках и укажите его же в макете. Также проверьте, что макет создан именно для нужного типа — макет поля не заменит макет группировки.
Как вывести в макете значение параметра отчёта, а не поля данных?
Используйте ячейку с типом заполнения «Шаблон» и обращением к параметру через выражение, например Отчёт за период с [&НачалоПериода], либо вычисляемое поле в схеме, которое возвращает значение параметра, и свяжите с ним параметр макета.
Можно ли редактировать макет в режиме предприятия без конфигуратора?
Нет, макеты СКД редактируются только в конфигураторе в составе схемы компоновки данных. В пользовательском режиме доступны только настройки отчёта: отборы, группировки, условное оформление. Для частых правок схему можно вынести во внешний отчёт — его файл редактируется без изменения основной конфигурации.
Чем макет СКД отличается от обычного табличного макета?
Обычный табличный макет заполняется вручную в коде: разработчик сам получает области и присваивает параметры. Макет СКД встроен в механизм компоновки: процессор вывода сам обходит результат и подставляет значения в параметры по именам, а разработчик управляет только шаблоном и при необходимости логикой вывода областей.
Как вывести картинку или логотип в макете СКД?
Вставьте картинку непосредственно в табличный документ макета на закладке «Макеты» — она будет выводиться вместе с областью. Для картинок, зависящих от данных (например, фото сотрудника), используйте ячейку с типом, допускающим вывод картинки, и параметр, содержащий объект картинки, полученный программно при формировании.
Почему в макете пустые ячейки вместо итогов по ресурсам?
Проверьте, что ресурс объявлен на закладке «Ресурсы» схемы и рассчитывается для нужной группировки, а имя параметра в макете совпадает с именем ресурса. Если группировка выводится без детальных записей, убедитесь, что итоги по группе включены в настройках — иначе значения ресурсов для неё не вычисляются.