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