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