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