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