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

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

Объект конфигурации «Отчет» в 1С: для чего предназначен и как работает

Для чего предназначен объект конфигурации «Отчет» в 1С: структура, схема компоновки данных, отличие от обработки и документа, практические сценарии создания отчетов.

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

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

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

Что представляет собой объект «Отчет» в дереве конфигурации

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

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

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

Из чего состоит отчет: основные элементы структуры

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

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

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

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

Как отчет получает данные: СКД, запрос и произвольный алгоритм

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

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

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

Способы получения данных для отчета

СКД с запросом

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

СКД с набором «Объект»

Подходит для расчетных показателей и внешних источников; требует программного заполнения таблицы в модуле.

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

Подходит для фиксированных печатных форм; нет интерактивных настроек, вся логика в коде.

Чем отчет отличается от обработки, документа и внешнего отчета

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

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

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

Когда выбрать внешний отчет вместо объекта конфигурации

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

Практический сценарий: создать простой отчет на СКД

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

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

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

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

Как проверить корректность отчета

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

Совпадает с типовым отчетом по тому же регистру

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

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

Группировки
Норма

Сумма по группам сходится с общим итогом

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

Строки дублируются — вероятно, лишнее соединение в запросе

Параметры периода
Норма

Отчет за разные даты дает адекватно меняющиеся данные

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

Данные не реагируют на период — параметр не передан в запрос

Типичные ошибки и ограничения при работе с отчетами

Наиболее частая ошибка — дублирование строк из-за соединения таблиц без учета кратности связи. Если к остаткам присоединить регистрационные данные «один ко многим» без группировки, суммы в отчете завышаются кратно числу связанных записей. Диагностируется это сравнением итогов с эталонным отчетом.

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

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

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

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

Настройка прав, подсистем и размещение в интерфейсе

Чтобы пользователь увидел отчет, объект должен быть включен хотя бы в одну подсистему, а роль пользователя должна давать право «Использование» и «Просмотр» на этот объект. В типовых конфигурациях на базе БСП права на отчеты обычно уже разложены по профилям групп доступа.

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

Маршрут решения

Как выбрать способ реализации

Нужен аналитический отчет с отборами и группировками для пользователейСоздайте объект «Отчет» со схемой компоновки данных и вариантами настроек
Конфигурация типовая на полной поддержке, менять ее нельзяРазработайте внешний отчет и подключите через дополнительные отчеты и обработки
Нужна фиксированная печатная форма без настроекИспользуйте программный вывод в табличный документ через макет
Нужно не показать, а изменить данныеИспользуйте обработку — отчет для этой задачи не предназначен

Часто задаваемые вопросы

Может ли отчет изменять данные в базе?

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

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

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

Почему отчет формируется очень долго?

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

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

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

Что такое варианты отчета и зачем они нужны?

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

Нужно ли программировать, чтобы создать отчет?

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

Итог

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

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