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