Выгрузка внешней и дополнительной обработки 1С в файл .epf

· 9 мин

Содержание

Чтобы сохранить в файл дополнительную обработку, подключённую к базе 1С, откройте Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, откройте карточку нужной обработки и в меню Ещё выберите Выгрузить в файл.... Программа отдаст файл с расширением .epf (обработка) или .erf (отчёт), который можно открыть через Файл → Открыть или загрузить в другую базу.

Путь одинаков для конфигураций на БСП: Бухгалтерии 3.0, ЗУП 3.1, УТ 11, КА 2 и ERP. Если обработка зашита в саму конфигурацию или открыта в Конфигураторе, сохранять её нужно иначе — эти случаи разобраны ниже, вместе с выгрузкой кодом и пакетной командой.

Какие файлы получаются при сохранении обработки

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

РасширениеЧто внутриГде открывается
.epfвнешняя обработка (External Processing File)Файл → Открыть в режиме 1С:Предприятие или Конфигуратор
.erfвнешний отчёт (External Report File)так же, плюс подключение как дополнительный отчёт
набор .xml и .bslобработка, разобранная на исходные файлыКонфигуратор (обратная сборка), 1С:EDT, Git

📌 «Дополнительная» и «внешняя» обработка — один и тот же файл. Разница в способе подключения:

  • внешняя — открыли файл с диска через Файл → Открыть, в базе её нет;
  • дополнительная — файл загружен в справочник «Дополнительные отчеты и обработки» и хранится внутри базы. Там же настроены разделы, команды и пользователи, которым она доступна.

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

Выгрузка из справочника «Дополнительные отчеты и обработки»

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

Шаг 1. Откройте список дополнительных обработок

  1. Перейдите в раздел Администрирование.
  2. Выберите Печатные формы, отчеты и обработки.
  3. Убедитесь, что флажок Дополнительные отчеты и обработки включён, и щёлкните по одноимённой ссылке.

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

Шаг 2. Найдите нужную обработку

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

💡 Колонка «Вид» показывает тип: «Дополнительная обработка», «Печатная форма», «Заполнение объекта», «Отчет». По ней сразу понятно, какое расширение будет у файла.

Шаг 3. Выгрузите файл

  1. Откройте карточку обработки двойным щелчком.
  2. Нажмите Ещё в командной панели карточки.
  3. Выберите Выгрузить в файл....
  4. Укажите папку и имя. По умолчанию программа подставляет имя файла, под которым обработку загружали.

В тонком клиенте откроется стандартное окно сохранения Windows. В веб-клиенте файл скачает браузер — ищите его в папке загрузок.

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

Где ещё лежит рядом нужная команда

В той же карточке есть обратная команда — Загрузить из файла.... Ей заменяют обработку новой версией без пересоздания элемента справочника. Настройки размещения и доступа при этом сохраняются. Удобный приём: выгрузить старую версию в файл как резервную копию и только потом загружать новую.

Сохранение обработки в Конфигураторе

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

Сохранить открытую внешнюю обработку

  1. Запустите базу в режиме Конфигуратор.
  2. Выберите Файл → Открыть и укажите файл .epf или .erf.
  3. Внесите правки в форму или модуль.
  4. Сохраните: Файл → Сохранить (Ctrl+S) — перезапишет исходный файл, Файл → Сохранить как... — создаст копию под новым именем.

💡 Перед правкой чужой обработки сделайте Сохранить как... с суффиксом версии, например ЗагрузкаПрайса_v2.epf. Исходник останется нетронутым, а откатиться можно за секунду.

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

Сохранить обработку из состава конфигурации

Встроенные обработки (например, «Групповое перепроведение документов » или «Универсальный обмен данными» в старых релизах) не лежат в отдельных файлах. Но их можно сохранить как внешние:

  1. В Конфигураторе откройте дерево: Конфигурация → Открыть конфигурацию.
  2. Разверните ветку Обработки (или Отчеты).
  3. Щёлкните правой кнопкой по нужному объекту.
  4. Выберите Сохранить как внешнюю обработку, отчет....
  5. Укажите имя файла .epf или .erf.

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

Разобрать обработку на исходные файлы

Для системы контроля версий и сравнения правок удобен формат XML : обработка раскладывается на корневой .xml, модули .bsl и описания форм. В Конфигураторе команды выгрузки в файлы и загрузки из файлов есть для открытой внешней обработки, но для регулярной работы удобнее пакетный режим из следующего раздела. В 1С:EDT обработку импортируют в проект и правят уже как набор исходников.

Пакетная выгрузка без открытия Конфигуратора

Когда обработок десятки или выгрузку нужно встроить в скрипт сборки, используйте пакетный режим Конфигуратора. Параметр /DumpExternalDataProcessorOrReportToFiles разбирает файл на XML, а /LoadExternalDataProcessorOrReportFromFiles собирает обратно.

rem Разобрать обработку на исходники
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "C:\Bases\Empty" ^
  /DumpExternalDataProcessorOrReportToFiles "C:\src\Prices\Prices.xml" "C:\epf\Prices.epf" ^
  /Out "C:\logs\dump.log"

rem Собрать обратно в epf
"C:\Program Files\1cv8\8.3.24.1548\bin\1cv8.exe" DESIGNER /F "C:\Bases\Empty" ^
  /LoadExternalDataProcessorOrReportFromFiles "C:\src\Prices\Prices.xml" "C:\epf\Prices_new.epf" ^
  /Out "C:\logs\load.log"

Номер версии в пути 8.3.24.1548 подставьте свой — посмотрите папку C:\Program Files\1cv8\. Для пакетной работы подойдёт пустая файловая база: команды не трогают её данные.

Если в пути есть пробелы, берите его в кавычки целиком. Результат работы ищите в файле из параметра /Out — окна с ошибкой пакетный режим не показывает.

Программное сохранение обработки кодом

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

В конфигурациях на БСП двоичные данные файла лежат в реквизите ХранилищеОбработки справочника ДополнительныеОтчетыИОбработки (тип ХранилищеЗначения). Имя исходного файла — в реквизите ИмяФайла.

Пример для выполнения на сервере (файловая база или сервер с доступом к нужной папке):

&НаСервере
Процедура ВыгрузитьВсеОбработкиНаСервере(Каталог)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |   Обработки.Ссылка КАК Ссылка,
    |   Обработки.Наименование КАК Наименование,
    |   Обработки.ИмяФайла КАК ИмяФайла
    |ИЗ
    |   Справочник.ДополнительныеОтчетыИОбработки КАК Обработки
    |ГДЕ
    |   НЕ Обработки.ПометкаУдаления
    |   И НЕ Обработки.ЭтоГруппа";

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл

        Данные = Выборка.Ссылка.ХранилищеОбработки.Получить();
        Если ТипЗнч(Данные) <> Тип("ДвоичныеДанные") Тогда
            Продолжить;
        КонецЕсли;

        ИмяФайла = Выборка.ИмяФайла;
        Если ПустаяСтрока(ИмяФайла) Тогда
            ИмяФайла = Выборка.Наименование + ".epf";
        КонецЕсли;

        Данные.Записать(Каталог + ПолучитьРазделительПути() + ИмяФайла);

    КонецЦикла;

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

Что важно знать про этот код:

  • 🗂️ Каталог — папка на машине, где выполняется серверный код. В клиент-серверном варианте это диск сервера 1С, а не компьютер пользователя.
  • 🔐 Запрос выполняется с правами текущего пользователя. Запускайте код под администратором, иначе часть обработок может не попасть в выборку.
  • 🔤 Если в наименовании есть символы \ / : * ? " < > |, Windows не создаст файл. Для имён из Наименование стоит заменить их на подчёркивание через СтрЗаменить.
  • 📋 Отчёты (.erf) хранятся в том же справочнике. Расширение берётся из ИмяФайла, так что они выгрузятся корректно.

Чтобы отдать файл на компьютер пользователя в клиент-серверной базе, поместите двоичные данные во временное хранилище (ПоместитьВоВременноеХранилище) и на клиенте вызовите НачатьПолучениеФайлаССервера. Этот вариант работает и в веб-клиенте.

Хранение копий: сетевая папка, FTP и хранилище

Сохранить обработку в файл — полдела. Файл должен лежать там, где его найдут через год.

Сетевая папка

Самый простой вариант для небольшой команды. Заведите общую папку с понятной структурой:

\\fileserver\1C\Обработки\
    Бухгалтерия\
        ЗагрузкаВыписки_2.3.epf
    Зарплата\
        ПечатьЛистков_1.0.erf
    _Архив\

Номер версии в имени файла избавляет от вопроса «какая из трёх копий актуальна».

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

Раз в квартал сверяйте папку со справочником в базе. Обработки, которые давно отключены, переносите в _Архив, а не удаляйте.

Выгрузка на FTP из кода

Если копии нужно отправлять на удалённый сервер, в 1С есть объект FTPСоединение. Метод Записать отправляет локальный файл на сервер:

Соединение = Новый FTPСоединение("ftp.example.ru", 21, "user", "password");
Соединение.Записать("C:\epf\ЗагрузкаВыписки.epf", "/backup/epf/ЗагрузкаВыписки.epf");

Логин и пароль в код не зашивайте: храните их в защищённых настройках или константе с ограниченным доступом. Обычный FTP передаёт пароль открытым текстом, поэтому для внешних серверов лучше защищённое соединение или VPN.

Контроль версий

Если обработки пишет свой программист, правильнее хранить не .epf, а исходники XML в Git. Разбор и сборка делаются пакетными командами из раздела выше. Так видно, кто и что поменял в каждой версии.

Перед передачей обработки в другую базу
Выполнено: 0 / 5

Что мешает сохранить обработку и как это исправить

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

Не перезаписывайте рабочую обработку в справочнике файлом, который не проверили. Команда Загрузить из файла... сразу меняет версию для всех пользователей. Сначала откройте новый файл через Файл → Открыть и прогоните на тестовой базе.

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

Можно ли сохранить обработку, если я её только открыл через «Файл → Открыть»?
Отдельно сохранять не нужно: она уже лежит файлом там, откуда вы её открыли. Путь видно в заголовке окна Конфигуратора или в списке последних файлов меню «Файл».
Чем выгрузка из карточки отличается от «Сохранить как» в Конфигураторе?
Из карточки вы получаете тот файл, который хранится в базе, без изменений. «Сохранить как» записывает то, что открыто в Конфигураторе, включая несохранённые правки.
Можно ли получить файл обработки без Конфигуратора?
Да, если она подключена как дополнительная: выгрузка из карточки работает в режиме 1С:Предприятие. Встроенную в конфигурацию обработку без Конфигуратора в файл не сохранить.
Сохранится ли при выгрузке настройка разделов и пользователей?
Нет. Файл содержит только саму обработку. Размещение по разделам, расписания и доступ хранятся в карточке справочника, и в новой базе их нужно настроить заново.
Как узнать версию выгруженной обработки?
Версия указана в карточке справочника и задаётся разработчиком в модуле объекта. Удобнее сразу дописывать её в имя файла при выгрузке.