Внешний отчёт .erf: устройство файла, разработка и подключение к базе

· 9 мин

Содержание

Файл ERF в 1С — это внешний отчёт: отдельный файл с запросом, макетом и формой, который хранится вне конфигурации и подключается к базе по мере надобности. Открыть его можно двумя способами: разово через Главное меню (☰) → Файл → Открыть или постоянно — через Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Создают и правят такие файлы в Конфигураторе: Файл → Новый → Внешний отчет.

Работа с ERF одинакова для всех конфигураций на платформе 8.3: Бухгалтерии 3.0, ЗУП 3.1, УТ 11 и других. Различается только то, увидит ли пользователь отчёт после подключения, — это зависит от прав и настроек конкретной базы.

Что лежит внутри файла ERF

Расширение .erf расшифровывается как External Report File. Это двоичный контейнер платформы 1С, того же типа, что файл конфигурации .cf. Блокнотом его не прочитать: внутри упакованы метаданные и тексты модулей.

Состав внешнего отчёта почти повторяет обычный отчёт конфигурации:

  • 📄 Модуль объекта — код на встроенном языке: обработчики формирования, служебные функции, сведения для регистрации.
  • 🧩 Реквизиты и табличные части — поля, которые пользователь заполняет перед формированием.
  • 🖼 Формы — основная форма отчёта, форма настроек, форма варианта.
  • 📐 Макеты — чаще всего схема компоновки данных (СКД) или табличный документ для ручного вывода.
  • ⚙️ Свойства отчёта — основная схема компоновки, основная форма, хранилища вариантов и настроек.

Сам по себе файл данных не содержит. Остатки, обороты и справочники он берёт из той базы, к которой его подключили. Поэтому один и тот же ERF в двух разных базах покажет разные цифры.

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

Как устроен отчёт в выгрузке XML

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

ОстаткиПоСкладам.xml              ← описание объекта и свойств
ОстаткиПоСкладам/
  Ext/ObjectModule.bsl            ← модуль объекта
  Forms/ФормаОтчета/...           ← формы и их модули
  Templates/ОсновнаяСхемаКомпоновкиДанных/...  ← макет СКД

Выгрузить и собрать файл обратно можно из командной строки Конфигуратора:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"C:\Base\Demo" ^
  /DumpExternalDataProcessorOrReportToFiles "C:\src\ОстаткиПоСкладам" "C:\erf\ОстаткиПоСкладам.erf"

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"C:\Base\Demo" ^
  /LoadExternalDataProcessorOrReportFromFiles "C:\src\ОстаткиПоСкладам\ОстаткиПоСкладам.xml" "C:\erf\ОстаткиПоСкладам.erf"

Вместо 8.3.xx.xxxx подставьте номер своей платформы. В интерактивном режиме то же самое делается командами «Выгрузить в файлы» и «Загрузить из файлов» в контекстном меню корня отчёта в Конфигураторе.

Создание внешнего отчёта в Конфигураторе

Для разработки хватит любой базы, в которой есть нужные справочники и регистры. Лучше взять копию рабочей: запросы сразу будут видеть реальные объекты.

  1. Откройте базу в режиме Конфигуратор.
  2. Выберите Файл → Новый, в окне укажите «Внешний отчет ».
  3. В свойствах задайте Имя латиницей или кириллицей без пробелов, например ОстаткиПоСкладам, и понятный Синоним — его увидят пользователи.
  4. Нажмите «Открыть схему компоновки данных». Платформа создаст макет и пропишет его как основную схему.
  5. В схеме добавьте набор данных «Запрос» и откройте конструктор запроса.
  6. Выберите таблицы, например виртуальную таблицу остатков нужного регистра, отметьте поля.
  7. На вкладке «Ресурсы» укажите числовые поля, которые надо суммировать.
  8. На вкладке «Настройки» добавьте группировку и выберите выводимые поля. Без этого шага отчёт сформируется пустым.
  9. Сохраните: Файл → Сохранить, укажите папку и имя файла с расширением .erf.

Проверить результат можно сразу, не выходя из Конфигуратора: Отладка → Начать отладку, затем в пользовательском режиме открыть сохранённый файл.

Внешний отчёт привязан к структуре базы. Если в запросе используется регистр, которого нет в другой конфигурации, там отчёт не сформируется.

Отчёт с выводом через код

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

Как открыть файл ERF в рабочей базе

Есть два пути. Выбор зависит от того, нужен отчёт один раз или регулярно.

СпособКогда подходитОграничения
Файл → ОткрытьРазовая проверка, отчёт от разработчика «посмотреть»Нужны права на интерактивное открытие внешних отчётов; при каждом запуске файл выбирают заново
Дополнительные отчёты и обработкиОтчёт нужен постоянно и нескольким пользователямФайл должен содержать сведения для регистрации; подключает администратор
КонфигураторПравка, отладкаТолько для разработчика

Разовое открытие

  1. В пользовательском режиме нажмите Главное меню (☰) → Файл → Открыть или Ctrl+O.
  2. Выберите файл .erf на диске.
  3. Подтвердите предупреждение безопасности, если программа его покажет.
  4. В открывшейся форме нажмите «Сформировать».

В веб-клиенте файл не открывается с диска напрямую: браузер загрузит его на сервер, дальше всё работает так же.

Постоянное подключение в Бухгалтерии 3.0, ЗУП 3.1, УТ 11

  1. Откройте Администрирование → Печатные формы, отчеты и обработки.
  2. Включите флажок «Дополнительные отчеты и обработки» и перейдите по одноимённой ссылке.
  3. Нажмите «Добавить из файла» и выберите .erf.
  4. Проверьте вид — «Дополнительный отчет» — и на вкладке «Размещение» выберите разделы, где отчёт появится.
  5. На вкладке пользователей отметьте, кому он доступен, и нажмите «Записать и закрыть».

После этого отчёт открывается из раздела через команду «Дополнительные отчеты». Файл больше не нужен: копия хранится в базе.

Регистрация сработает, только если в модуле объекта отчёта есть экспортная функция СведенияОВнешнейОбработке(). Минимальный вариант для типовых конфигураций на БСП:

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

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
    ПараметрыРегистрации.Версия = "1.0";
    ПараметрыРегистрации.Информация = "Остатки товаров по складам на дату";

    Возврат ПараметрыРегистрации;

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

Без этой функции программа откажется регистрировать файл как дополнительный отчёт. Сам отчёт при этом рабочий — его можно открыть через Файл → Открыть.

Подключение из кода

Разработчику иногда нужно открыть внешний отчёт программно. В клиент-серверном варианте файл сначала помещают во временное хранилище, а затем подключают на сервере:

&НаСервере
Функция ПодключитьОтчетНаСервере(АдресХранилища)
    Возврат ВнешниеОтчеты.Подключить(АдресХранилища, , Ложь);
КонецФункции

Третий параметр Ложь отключает безопасный режим. Так делают только для проверенных файлов: в безопасном режиме отчёт не сможет обращаться к файлам, внешним компонентам и привилегированным операциям. Функция возвращает имя подключённого отчёта, по нему форму открывают через ОткрытьФорму("ВнешнийОтчет." + ИмяОтчета + ".Форма").

Чем ERF отличается от EPF, CF, CFE и других файлов 1С

ERF часто путают с соседними форматами. Файл внешнего отчёта не служит для обмена данными: он ничего не загружает и не выгружает, только читает базу и показывает результат.

РасширениеЧто этоМеняет конфигурациюСодержит данные
.erfВнешний отчётНетНет
.epfВнешняя обработка (заполнение, загрузка, печатные формы)НетНет
.cfeРасширение конфигурацииДополняет, не трогая основнуюНет
.cfФайл конфигурации целикомДа, при загрузкеНет
.cfuФайл обновления конфигурацииДаНет
.dtВыгрузка информационной базыЗаменяет всёДа
.mxlТабличный документНетТолько то, что в таблице
.xmlФайл обмена или выгрузка исходниковЗависит от назначенияЗависит от назначения

Главное различие ERF и EPF — в типе объекта. Отчёт заточен под чтение и вывод: у него есть основная схема компоновки, варианты, пользовательские настройки. Обработка — универсальный инструмент, который может и записывать документы. Переименовать .epf в .erf нельзя: платформа увидит внутри другой тип объекта и откажется его открывать.

Если доработка нужна навсегда и затрагивает типовой отчёт, удобнее расширение .cfe. Внешний отчёт хорош для самостоятельных отчётов, которые живут отдельно и не требуют правки типовых объектов.

Безопасность и ограничения внешних отчётов

Внешний отчёт исполняет код на стороне базы с правами того, кто его запустил. Код в модуле может не только читать данные, но и записывать их, удалять объекты, обращаться к файлам на сервере. Не открывайте ERF из непроверенных источников в рабочей базе.

Как платформа и типовые конфигурации защищают базу:

  • 🛡 Защита от опасных действий. В карточке пользователя есть флажок с таким названием. Если он включён, при открытии внешнего файла программа покажет предупреждение и попросит подтверждения.
  • 🔐 Права. Открывать внешние отчёты с диска могут только пользователи с правом на интерактивное открытие. В типовых конфигурациях его обычно имеют администраторы.
  • 🧱 Безопасный режим. Отчёт, подключённый через дополнительные отчёты, по умолчанию работает в безопасном режиме и не получает доступ к файловой системе и внешним компонентам.
  • ☁️ Облачные сервисы. В облаке внешние отчёты, как правило, проходят проверку сервиса перед подключением, а открыть произвольный файл с диска нельзя.

Ограничения, о которых стоит знать заранее:

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

Перед тем как запустить чужой отчёт, откройте его в Конфигураторе и просмотрите модуль объекта и модули форм. Насторожить должны вызовы УдалитьОбъекты, Записать() внутри отчёта, работа с файлами (КопироватьФайл, УдалитьФайлы) и запуск внешних программ (ЗапуститьПриложение).

Проверка ERF перед запуском в рабочей базе
Выполнено: 0 / 5

Частые ошибки при работе с файлами ERF

Большинство проблем связано не с самим файлом, а с базой, в которой его открывают.

Диагностика: выберите симптом

Отдельно про редактирование уже подключённого отчёта. Править копию, которая хранится в базе, нельзя напрямую. Порядок такой: выгрузить файл из карточки дополнительного отчёта, исправить в Конфигураторе, сохранить и загрузить обратно в ту же карточку. Если вместо этого добавить файл заново, появится второй отчёт-дубль, а настройки и варианты пользователей останутся у старого.

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

Чем открыть файл ERF без 1С?
Ничем полноценно. Это двоичный контейнер платформы. Сторонние утилиты распаковки покажут модули и макеты, но сформировать отчёт без базы 1С нельзя.
Можно ли открыть ERF в 1С 8.2 или 7.7?
В 7.7 — нет, там свои внешние отчёты с расширением .ert. В 8.2 файл, сохранённый в 8.3, как правило, не откроется.
Нужно ли обновлять внешний отчёт после обновления конфигурации?
Только если 1С изменила объекты, которые он использует. Проверьте отчёт на копии базы после каждого крупного обновления.
Где хранится отчёт после регистрации в дополнительных отчётах?
Внутри информационной базы, в справочнике дополнительных отчётов и обработок. Попадает в выгрузку .dt и резервные копии вместе с базой.
Можно ли поставить пароль на внешний отчёт?
Защитить код от просмотра штатно сложно. Надёжнее вынести логику в расширение или доверять файлы только проверенным людям.