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

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

Как сделать отчет в 1С Конфигураторе

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

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

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

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

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

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

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

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

Отчет на СКД

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

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

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

Внешний отчет (.erf)

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

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

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

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

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

Настройка схемы компоновки данных и запроса

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

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

ВЫБРАТЬ

ПродажиОбороты.Номенклатура КАК Номенклатура,

ПродажиОбороты.КоличествоОборот КАК Количество,

ПродажиОбороты.СтоимостьОборот КАК Сумма

ИЗ

РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПродажиОбороты

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

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

Настройка вариантов, группировок и отборов

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

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

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

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

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

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

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

Практический компромисс: использовать СКД для получения данных, а макет переопределить через макеты компоновки (закладка «Макеты» в схеме). Так вы сохраните настройки пользователя и получите управление оформлением ячеек.

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

Проверка результата и отладка

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

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

Отдельно проверьте права: пользователь без доступа к регистру получит пустой отчет или ошибку. В файловой базе это заметно реже, в клиент-серверной с разграничением ролей — почти всегда.

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

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

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

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

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

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

Скорость формирования
Норма

Отчет по месяцу формируется за секунды

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

Минутное ожидание — вероятно, запрос без виртуальных таблиц или без параметров периода

Поведение у рядового пользователя
Норма

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

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

Пустой результат или сообщение о нарушении прав — настройте роли

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

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

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

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

Итог

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

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

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

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

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

Чем внешний отчет отличается от встроенного?

Внешний отчет — это файл с расширением .erf, который открывается через «Файл — Открыть» или подключается к подсистеме дополнительных отчетов. Он не изменяет конфигурацию, поэтому безопасен при обновлениях, но требует наличия механизма подключения (в типовых решениях это подсистема БСП).

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

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

Как дать пользователю выбирать период отчета?

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

Как вывести отчет в несколько разных видов?

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

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

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