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

· 10 мин

Содержание

Чтобы выгрузить EPF из 1С, откройте базу в Конфигураторе, найдите обработку в ветке Обработки дерева конфигурации, щёлкните по ней правой кнопкой и выберите Сохранить как внешнюю обработку, отчет.... Если обработка уже подключена в пользовательском режиме как дополнительная, файл забирают из справочника: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки, карточка обработки, команда выгрузки в файл.

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

Что такое EPF и откуда его можно выгрузить

EPF (External Processing File) — файл внешней обработки 1С:Предприятия 8. Он не входит в конфигурацию: его открывают через Файл → Открыть или подключают в справочник дополнительных обработок, и он работает в контексте той базы, где запущен. Отчёты хранятся в похожем формате, но с расширением .erf.

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

Откуда обычно приходится доставать файл:

Где сейчас обработкаЧто получится на выходеГде выгружать
Объект ветки Обработки в конфигурации.epfКонфигуратор, контекстное меню объекта
Объект ветки Отчеты в конфигурации.erfКонфигуратор, то же меню
Справочник «Дополнительные отчеты и обработки».epf или .erfРежим Предприятия, карточка обработки
Расширение конфигурации.cfe, не EPFКонфигуратор или список расширений
Файл открыт в Конфигураторе после правки.epfФайл → Сохранить как

Если у вас есть только база и нет понимания, где искать обработку, начните с пользовательского режима. Во многих типовых конфигурациях на БСП (Бухгалтерия 3.0, ЗУП 3.1, УТ 11) доработки от внедренцев лежат именно в справочнике дополнительных обработок, а не в самой конфигурации.

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

Этот способ нужен, когда обработку написали прямо в конфигурации, а теперь её надо отдать в другую базу без обновления конфигурации там.

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

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

Если нужен уже открытый внешний файл

Бывает, что EPF открыли через Файл → Открыть, поправили модуль и хотят сохранить отдельной версией. Тогда:

  • Файл → Сохранить — перезаписывает исходный файл;
  • Файл → Сохранить как — кладёт копию под новым именем, исходник остаётся как был.

Перед правкой чужой обработки сохраните исходный файл копией — внешнюю обработку ничто не версионирует, и после перезаписи откатиться будет некуда.

Что проверить в коде после выгрузки

Обработка, вынутая из конфигурации, не всегда работает внешней без правок:

  • 🔗 обращения вида Обработки.ИмяОбработки.Создать() или ПолучитьФорму("Обработка.ИмяОбработки.Форма...") по-прежнему ведут на объект конфигурации, а не на внешний файл;
  • 🔒 если в базе обработку подключат как дополнительную через БСП, ей нужна экспортная функция СведенияОВнешнейОбработке() в модуле объекта — без неё регистрация в справочнике не пройдёт;
  • 🧩 общие модули, общие макеты и роли конфигурации доступны внешней обработке только в той базе, где они есть. В другой конфигурации вызовы к ним упадут.

Выгрузка EPF из справочника дополнительных обработок в режиме Предприятия

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

Путь в Бухгалтерии 3.0, ЗУП 3.1 и УТ 11:

Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки

Порядок действий:

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

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

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

Какая версия попадёт в файл

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

Расширения конфигурации: CFE вместо EPF

Частая путаница: доработку сделали расширением, а из базы пытаются «выгрузить EPF». Расширение — отдельная сущность, оно сохраняется в файл .cfe и подключается к конфигурации, а не открывается как обработка. Расширения появились в платформе 8.3.6.

Выгрузить CFE можно двумя путями.

В Конфигураторе:

  1. Откройте Конфигурация → Расширения конфигурации.
  2. Выделите расширение в списке.
  3. В меню команд окна списка выберите Конфигурация → Сохранить в файл....
  4. Укажите имя файла .cfe.

В пользовательском режиме (конфигурации на БСП):

  1. Откройте Администрирование → Печатные формы, отчеты и обработки → Расширения.
  2. Выделите расширение.
  3. В меню Ещё найдите команду сохранения в файл.

При переносе на другой сервер загрузка .cfe и обновление конфигурации базы данных — два отдельных шага. Загрузили файл, но не обновили — расширение не заработает.

Если внутри расширения есть собственная обработка и её надо отдать отдельным EPF, проще создать новую внешнюю обработку и перенести в неё реквизиты, формы и код. Прямой конвертации CFE в EPF нет.

Пакетная выгрузка: командная строка и код на встроенном языке

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

Разбор EPF в XML и сборка обратно

Конфигуратор в пакетном режиме умеет раскладывать внешнюю обработку на XML-файлы и собирать её из них. Это основа хранения EPF в Git.

Разобрать файл в исходники:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"C:\Bases\Empty" /DisableStartupMessages ^
  /DumpExternalDataProcessorOrReportToFiles "C:\src\Zagruzka\Zagruzka.xml" "C:\epf\Zagruzka.epf" ^
  /Out"C:\logs\dump.log"

Собрать EPF из исходников:

"C:\Program Files\1cv8\8.3.xx.xxxx\bin\1cv8.exe" DESIGNER /F"C:\Bases\Empty" /DisableStartupMessages ^
  /LoadExternalDataProcessorOrReportFromFiles "C:\src\Zagruzka\Zagruzka.xml" "C:\epf\Zagruzka.epf" ^
  /Out"C:\logs\build.log"

Для запуска нужна любая информационная база. Удобно держать пустую файловую базу только под эти команды — так рабочие базы не задеваются. Замените 8.3.xx.xxxx на номер установленной у вас платформы, а результат смотрите в файле из параметра /Out.

Для расширения есть параметр выгрузки конфигурации с указанием имени расширения: /DumpCfg "C:\ext\Dorabotki.cfe" -Extension "ИмяРасширения". Полный список ключей пакетного режима выводится в справке по параметрам командной строки, она есть в составе документации платформы.

Выгрузка всех файлов из справочника кодом

Обработки, подключённые через БСП, лежат в реквизите ХранилищеОбработки справочника ДополнительныеОтчетыИОбработки. Достаточно пройтись по справочнику и записать двоичные данные на диск.

Код ниже — для серверной процедуры отдельной внешней обработки, которую администратор открывает через Файл → Открыть. Файлы запишутся на диск компьютера, где выполняется сервер 1С: в файловой базе — на ваш компьютер, в клиент-серверной — на сервер.

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

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

	Выборка = Запрос.Выполнить().Выбрать();
	Сч = 0;

	Пока Выборка.Следующий() Цикл

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

		Если Выборка.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.Отчет
			Или Выборка.Вид = Перечисления.ВидыДополнительныхОтчетовИОбработок.ДополнительныйОтчет Тогда
			Расширение = ".erf";
		Иначе
			Расширение = ".epf";
		КонецЕсли;

		Сч = Сч + 1;
		ИмяФайла = СтрШаблон("%1_%2%3", Выборка.ИмяОбъекта, Формат(Сч, "ЧГ=0"), Расширение);
		ДвоичныеДанные.Записать(Каталог + ПолучитьРазделительПути() + ИмяФайла);

	КонецЦикла;

	Сообщить(СтрШаблон("Выгружено файлов: %1", Формат(Сч, "ЧГ=0")));

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

Порядковый номер в имени нужен потому, что одно и то же ИмяОбъекта может встретиться у двух разных записей — например, у старой и новой версии обработки. Без номера второй файл молча перезапишет первый.

Каталог должен существовать заранее, а у пользователя, под которым работает сервер 1С, должны быть права на запись в него. Запускайте обработку от администратора базы: в безопасном режиме, в котором БСП выполняет дополнительные обработки, запись файлов запрещена.

Ошибки при выгрузке и запуске выгруженного файла

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

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

Хранение и версионирование внешних обработок

Хранилище конфигурации внешние обработки не версионирует — оно работает только с объектами конфигурации. Порядок придётся выстроить самому.

Рабочая схема для небольшой команды:

  • 📁 Одна папка — одна обработка. Внутри — актуальный EPF и подпапка src с XML-исходниками, разобранными командой из раздела про пакетную выгрузку.
  • 🏷️ Версия в имени файла и в коде. ZagruzkaBanka_1.4.2.epf и то же 1.4.2 в функции СведенияОВнешнейОбработке(). Тогда по карточке в справочнике сразу видно, что стоит в базе.
  • 🌿 Git хранит XML, а не бинарник. EPF — бинарный файл, Git покажет только факт изменения. XML даёт нормальный построчный diff модулей и форм.
  • 📝 Журнал изменений рядом. Короткий файл: версия, дата, что поменялось, в какие базы установлено.

Для команды разработчиков удобнее 1С:EDT: она хранит внешние обработки исходниками в проекте и сама работает с Git. В Конфигураторе тот же результат дают пакетные команды разбора и сборки, повешенные на хуки Git, — так коммит всегда содержит и XML, и собранный EPF. Есть и сторонние утилиты разбора бинарных файлов 1С, например v8unpack, но штатные команды платформы надёжнее: формат XML у них документирован и стабилен между релизами платформы.

Перед переносом на другой сервер

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

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

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

Можно ли достать исходный код из EPF без Конфигуратора?
Да. Командой пакетного режима /DumpExternalDataProcessorOrReportToFiles файл раскладывается на XML, а модули оказываются в обычных текстовых файлах .bsl. Конфигуратор при этом запускается без интерфейса.
Чем EPF отличается от ERF?
Только видом объекта: EPF — внешняя обработка, ERF — внешний отчёт. Отчёт строится на системе компоновки данных и сохраняется из ветки Отчеты. Выгружаются они одинаково.
Почему обработка с паролем на модуль не открывается для правки?
Автор защитил модуль паролем при сохранении. Выгрузить и запустить такую обработку можно, а читать и менять код — только зная пароль. Обходить защиту чужого кода не стоит: это нарушает права автора.
Нужно ли выгонять пользователей из базы, чтобы выгрузить EPF?
Нет. Сохранение объекта как внешней обработки, выгрузка из справочника и сохранение расширения в файл только читают данные. Монопольный режим для этого не нужен.
Обработку открыли через «Файл → Открыть». Она сохранилась в базе?
Нет. Открытая так обработка в базу не записывается: файл остаётся там, откуда его открыли. Чтобы он хранился в базе и был доступен из любой точки, подключите его в справочник дополнительных обработок.