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

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

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

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

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

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

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

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

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

Табличный документ как макет выбирают, когда структура результата жестко зафиксирована: счет, акт, ТОРГ-12, внутренняя ведомость с точным расположением колонок. Здесь каждая ячейка описана в макете, а разработчик в коде последовательно выводит области — шапку, строки, подвал.

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

СКД (схема компоновки данных)

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

Макет табличного документа

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

Внешний отчет

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

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

Создание объекта «Отчет» в конфигураторе

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

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

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

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

Формирование запроса к данным

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

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

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

Настройка макета СКД

После заполнения набора данных перейдите на закладки «Ресурсы» и «Настройки». В ресурсах укажите поля, которые нужно суммировать, — например, «СуммаОборот» с выражением «Сумма(СуммаОборот)». Без ресурсов группировки не покажут итогов, и отчет превратится в плоский список.

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

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

Программный вывод в табличный документ

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

В модуле объекта отчета (или в общем модуле) напишите процедуру формирования: выполните запрос, получите макет методом ПолучитьМакет("ИмяМакета"), затем в цикле обхода выборки заполняйте параметры области и выводите её в табличный документ.

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

Для группировок используйте обход выборки по группировкам и методы НачатьГруппуСтрок/ЗакончитьГруппуСтрок — тогда пользователь сможет сворачивать уровни в готовом документе. Итоги по группе берите из выборки верхнего уровня, а не суммируйте вручную, чтобы избежать расхождений при отборах в запросе.

Типичные ошибки
01
Вывод области строки до заполнения параметров — в отчете пустые ячейки или данные предыдущей строки
02
Запрос к физической таблице регистра вместо виртуальной — детальные движения вместо итогов и раздутый отчет
03
Забытые права и подсистемы — отчет создан, но пользователи его не видят
04
Имя области в коде не совпадает с именем в макете — ошибка «Область не найдена» при формировании
05
Расчет итогов суммированием в коде вместо группировок запроса — расхождения при сложных отборах

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

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

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

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

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

Суммы в отчете
Норма

Совпадают с типовым отчетом или ОСВ за тот же период

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

Расхождения даже на копейки — проверяйте виртуальные таблицы и отборы

Пустой период
Норма

Отчет формируется без ошибки, выводит шапку или сообщение об отсутствии данных

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

Ошибка выполнения или пустой лист без пояснений

Права доступа
Норма

Отчет виден и формируется под рядовым пользователем

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

Отчет доступен только администратору

Производительность
Норма

Отчет за месяц формируется за приемлемое время

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

Формирование занимает минуты — проверяйте запрос и соединения таблиц

Когда задачу лучше поручить специалисту

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

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

Итог

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

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

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

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

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

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

Да. Создайте внешний отчет (файл .erf) через конфигуратор: «Файл — Новый — Внешний отчет». В типовых конфигурациях он подключается через справочник «Дополнительные отчеты и обработки» и работает без изменения основной конфигурации и снятия объектов с поддержки.

Почему при формировании возникает ошибка «Область не найдена»?

Имя области в коде не совпадает с именем в макете. Проверьте, что область в макете выделена и ей присвоено имя (свойство «Имя» в палитре свойств), а в коде метод ПолучитьОбласть() вызывается с точно такой же строкой, включая регистр букв и отсутствие пробелов.

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

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

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

Чаще всего не заполнена закладка «Ресурсы» в схеме компоновки. Добавьте туда числовые поля с агрегатной функцией, например Сумма(СуммаОборот). Также проверьте, что в настройках у группировки включен вывод общих итогов или итогов по группе.

Как дать пользователю возможность менять отборы, но запретить ломать структуру отчета?

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