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