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

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

Как сделать макет отчета в 1С

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

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

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

Определяем тип макета: СКД или табличный документ

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

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

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

Макет СКД

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

Табличный макет

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

Отчет на СКД без макета

Если достаточно стандартного вывода, макет можно не создавать вовсе — настройки варианта отчета решают задачу без доработки.

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

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

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

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

Обратите внимание на связь макета с настройками отчета. Макет применяется только к тем группировкам и полям, которые реально присутствуют в выбранном варианте настроек. Если в варианте нет группировки «Номенклатура», а макет итогов для нее создан — он просто не будет использован. Поэтому макет проектируют под конкретный вариант отчета, а не «вообще».

Настройка оформления ячеек макета

Для каждой ячейки макета доступно оформление: шрифт, цвет, рамки, выравнивание, формат значения. Формат задается стандартной форматной строкой 1С — например, для числа с двумя знаками и разделителем групп или для даты без времени. Оформление, заданное в макете, имеет приоритет над общим оформлением отчета, поэтому конфликтующие настройки выигрывает макет.

Чтобы вывести в ячейке произвольный текст с подстановкой данных, используйте тип «Шаблон»: текст пишется в квадратных скобках с указанием имени поля, например «Обороты по контрагенту [Контрагент] за период [Период]». Это удобно для заголовков и подписей итогов, где статичный текст должен сочетаться со значениями из данных.

Создаем табличный макет для печатной формы

Табличный макет добавляется в дереве конфигурации: правой кнопкой по отчету, обработке или документу — «Добавить» — «Макет» — тип «Табличный документ». Откроется редактор, похожий на электронную таблицу. Здесь рисуют внешний вид формы: объединяют ячейки, задают рамки, шрифты, ширину колонок и высоту строк.

Ячейки, в которые код будет подставлять данные, оформляются как параметры. Выделите ячейку, откройте ее свойства и установите «Заполнение» — «Параметр», а в свойстве «Параметр» укажите имя, например «НомерДокумента» или «СуммаПрописью». Если ячейка должна содержать текст с вставками, используйте заполнение «Шаблон» и квадратные скобки в тексте.

Далее макет делится на области. Выделите строки шапки и через меню «Таблица» — «Имена» — «Назначить имя» создайте область «Шапка». Аналогично создаются области «Строка» (повторяющаяся часть для каждой позиции табличной части) и «Подвал» (итоги, подписи). Именно по этим именам код будет обращаться к макету.

Программное заполнение табличного макета

Заполнение макета выполняется в модуле объекта или в общем модуле печати. Типовая процедура выглядит так: получить макет, получить области, заполнить параметры, вывести области в табличный документ. Для шапки и подвала области выводятся один раз, для строк — в цикле по данным выборки из запроса.

bsl
Макет = ПолучитьМакет("МакетОтчета");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
ТабДок = Новый ТабличныйДокумент;
ОбластьШапка.Параметры.ПериодОтчета = Период;
ТабДок.Вывести(ОбластьШапка);
Пока Выборка.Следующий() Цикл
    ОбластьСтрока.Параметры.Заполнить(Выборка);
    ТабДок.Вывести(ОбластьСтрока);
КонецЦикла;

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

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

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

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

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

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

Итоги отчета
Норма

Совпадают с контрольной выборкой или отчетом-эталоном

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

Итоги отличаются или дублируются — проверьте ресурсы и группировки

Заполнение параметров
Норма

Все ячейки содержат значения

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

Пустые ячейки — имя параметра не совпадает с полем данных

Печатная форма на принтере
Норма

Строки не разрываются, подвал на той же странице, что и последние строки

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

Итоги уехали на отдельный лист — нужна проверка ПроверитьВывод()

Расшифровка в СКД
Норма

Двойной клик по ячейке открывает детализацию

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

Расшифровка не работает — поле не включено в настройки варианта

Типичные ошибки
01
Создание макета СКД без учета варианта настроек — макет группировки не применяется, потому что такой группировки нет в варианте отчета
02
Параметр в макете назван иначе, чем поле в запросе — ячейка выводится пустой без какого-либо сообщения об ошибке
03
Изменение макета без обновления конфигурации базы данных — в режиме предприятия видна старая версия
04
Вывод строк без ПроверитьВывод() — при печати итоги и подписи оказываются на отдельной странице
05
Редактирование типового макета напрямую вместо внешней печатной формы — изменения теряются при обновлении конфигурации

Когда не нужно делать макет вручную

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

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

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

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

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

Почему параметр в табличном макете выводится пустым?

Чаще всего имя параметра в свойствах ячейки не совпадает с именем, под которым значение присваивается в коде, или с псевдонимом поля в запросе при использовании метода Заполнить(). Платформа не сообщает об этой ошибке — проверьте написание посимвольно в макете и в модуле.

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

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

Как вывести в макете СКД текст с подстановкой значения поля?

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

Почему при печати итоги уехали на отдельную страницу?

Области выводятся без проверки помещения на лист. Перед выводом очередной строки вызывайте ПроверитьВывод() с массивом областей «строка + подвал»: если они не помещаются, выведите разрыв страницы, чтобы подвал остался вместе с последними строками.

Итог

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

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