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

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

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

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

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

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

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

Подготовка: что нужно проверить перед созданием отчета

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

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

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

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

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

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

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

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

Простой пример запроса для отчета по продажам:

ВЫБРАТЬ

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

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

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

ИЗ

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

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

bsl
// Модуль объекта отчета: программная установка параметра, если нужно
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();
    Параметр = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода"));
    Если Параметр <> Неопределено Тогда
        Параметр.Значение = НачалоМесяца(ТекущаяДатаСеанса());
        Параметр.Использование = Истина;
    КонецЕсли;
    КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
КонецПроцедуры

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

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

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

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

Размещение отчета в интерфейсе и обновление конфигурации

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

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

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

Внешний отчет как безопасная альтернатива

Если конфигурация типовая и находится на поддержке, встроенный отчет — не лучший выбор. Создайте внешний отчет: Файл → Новый → Внешний отчет. Внутри он устроен так же — та же СКД, тот же запрос, — но сохраняется как отдельный файл с расширением .erf и подключается через механизм «Дополнительные отчеты и обработки» без изменения конфигурации.

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

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

Встроенный отчет в конфигурации

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

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

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

Консоль отчетов / произвольный запрос

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

Проверка результата и типичные ошибки

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

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

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

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

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

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

Суммы расходятся — проверяйте виртуальную таблицу и связи в запросе

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

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

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

Формирование занимает минуты — проверьте параметры виртуальной таблицы и индексы

Отборы пользователя
Норма

Период и отборы меняются в настройках без ошибок

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

При изменении настроек ошибка или пустой результат — проверьте параметры СКД

Видимость в интерфейсе
Норма

Отчет отображается в нужной подсистеме у пользователя

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

Отчета нет в меню — проверьте подсистемы и права доступа

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

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

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

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

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

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

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

Почему в отчете пустые итоги по группировкам?

Чаще всего не заполнена закладка «Ресурсы» в схеме компоновки данных. СКД суммирует только те поля, которые явно отмечены как ресурсы. Откройте схему, перейдите на «Ресурсы» и перенесите туда числовые поля — итоги появятся.

Как дать пользователю возможность менять период отчета?

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

Отчет формируется очень долго — что проверить в первую очередь?

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

Нужно ли программировать форму отчета вручную?

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

Итог

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

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