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

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

Как из запроса сделать отчет в 1С

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

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

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

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

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

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

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

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

Подготовка и проверка текста запроса

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

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

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

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

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

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

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

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

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

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

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

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

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

Проверка результата и вывод отчета пользователям

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

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

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

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

Итог по суммовому полю
Норма

Совпадает с итогом типового отчета за тот же период

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

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

Группировки
Норма

Строки сворачиваются, итоги считаются по каждой группе

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

Итогов нет — поле не добавлено в ресурсы

Параметры периода
Норма

Отчет пересчитывается при смене дат

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

Данные не меняются — параметры не связаны с запросом

Альтернативные способы: программный отчет и консоль

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

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

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

Отчет на СКД

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

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

Полный контроль над макетом и обходом данных. Требует написания кода и ручной настройки формы

Консоль запросов

Быстрая разовая проверка данных. Не подходит как постоянный инструмент для пользователей

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

Самая частая ошибка — оставленное в запросе предложение «ИТОГИ ПО»: СКД либо выдаст ошибку, либо покажет лишние строки итогов. Вторая по частоте — забытые ресурсы, из-за чего отчет выводит только детальные записи без сумм по группам. Третья — параметры виртуальных таблиц, не вынесенные в параметры СКД: пользователь не сможет изменить период, и отчет всегда покажет одни и те же данные.

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

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

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

Запрос превращается в отчет через схему компоновки данных: создайте объект «Отчет», добавьте набор данных с текстом запроса, настройте ресурсы и структуру. Уберите «ИТОГИ» из запроса, вынесите период в параметры и проверьте итоги на тестовых данных перед передачей отчета пользователям.

Часто задаваемые вопросы

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

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

Почему отчет выдает ошибку «Поле не найдено»?

Чаще всего поле используется в настройках (группировке, отборе, ресурсах), но отсутствует в списке полей набора данных на закладке «Наборы данных». Откройте схему компоновки, проверьте, что поле есть в тексте запроса и в списке полей, и что его имя совпадает везде, включая регистр символов в псевдонимах.

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

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

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

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

Почему суммы в отчете задваиваются?

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

Можно ли сохранить несколько вариантов настроек одного отчета?

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