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

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

Как написать внешний отчет в 1С

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

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

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

Что такое внешний отчет и когда он нужен

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

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

Создание файла внешнего отчета в конфигураторе

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

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

Порядок создания файла
  1. 1
    Откройте конфигуратор нужной базы
  2. 2
    Файл → Новый → Внешний отчет, задайте имя и синоним
  3. 3
    Добавьте основную схему компоновки данных
  4. 4
    Напишите запрос в наборе данных СКД
  5. 5
    Настройте ресурсы, параметры и варианты отчета
  6. 6
    Сохраните файл с расширением .erf

Построение отчета на СКД

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

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

Частая ситуация: запрос корректен, но отчет выводит пустую таблицу. Причины обычно в том, что параметры периода не передаются в запрос, либо в запросе использовано условие, отсекающее все строки. Проверяйте запрос отдельно через консоль запросов перед отладкой компоновки.

Программное формирование без СКД

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

Процедура СформироватьОтчет(Результат, Параметры) Экспорт

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

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

| СУММА(Продажи.СтоимостьОборот) КАК Сумма

|ИЗ

| РегистрСведений.Продажи.Обороты(&Начало, &Конец) КАК Продажи

|СГРУППИРОВАТЬ ПО

| Продажи.Номенклатура";

Запрос.УстановитьПараметр("Начало", Параметры.НачалоПериода);

Запрос.УстановитьПараметр("Конец", Параметры.КонецПериода);

// далее — вывод результата в табличный документ

КонецПроцедуры

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

Подключение через «Дополнительные отчеты и обработки»

В типовых конфигурациях на БСП (Управление торговлей, ERP, Бухгалтерия) внешние отчеты подключаются штатно: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Предварительно включите сам механизм флажком в том же разделе. Нажмите «Добавить из файла», выберите .erf-файл — отчет появится в списке и станет доступен в разделе «Дополнительные отчеты».

Чтобы конфигурация автоматически заполнила карточку отчета (наименование, версию, разделы), в модуле объекта должна быть функция СведенияОВнешнейОбработке:

Функция СведенияОВнешнейОбработке() Экспорт

Сведения = Новый Структура;

Сведения.Вставить("Наименование", "Продажи по менеджерам");

Сведения.Вставить("Вид", "ДополнительныйОтчет");

Сведения.Вставить("Версия", "1.0");

Сведения.Вставить("БезопасныйРежим", Истина);

Возврат Сведения;

КонецФункции

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

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

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

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

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

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

Совпадают с типовым отчетом по тому же регистру

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

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

Смена периода
Норма

Данные пересчитываются корректно

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

Период игнорируется — параметры не связаны со СКД

Пустой период
Норма

Отчет показывает пустую таблицу без ошибок

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

Ошибка исполнения или зависание формы

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

Ограничения и альтернативы

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

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

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

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

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

Расширение конфигурации

Подходит для постоянных доработок с контролем версий; требует аккуратности при обновлении конфигурации

Универсальный отчет / консоль СКД

Для разовой аналитики без разработки; нет сохраненного файла для передачи коллегам

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

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

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

Почему БСП не принимает файл при подключении?

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

Можно ли использовать внешний отчет в файловой и клиент-серверной базе?

Да, один и тот же .erf-файл работает в обоих режимах, если код не содержит платформенно-зависимых вызовов. Учитывайте, что в клиент-серверном варианте запросы выполняются на сервере, поэтому тяжелые отчеты заметнее влияют на других пользователей.

Как дать пользователю доступ только к конкретному внешнему отчету?

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

Что делать, если отчет работает у разработчика, но падает у клиента?

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

Итог

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

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