Внешняя обработка .epf: от запуска чужого файла до своей разработки и подключения в базу

· 10 мин

Содержание

Файл с расширением .epf — это внешняя обработка 1С:Предприятия: программа на встроенном языке, которая хранится отдельно от базы и запускается из неё через меню Файл → Открыть (сочетание Ctrl+O). Такой файл не открывается двойным щелчком как документ: его читает только платформа 1С, а внутри лежат форма, модуль с кодом и макеты.

Внешние обработки присылают программисты, обслуживающие организации, коллеги с форумов. Ими загружают данные из Excel, групповой правкой меняют реквизиты, печатают нестандартные бланки.

Что лежит внутри файла EPF и зачем он нужен

Внешняя обработка по устройству почти не отличается от обработки внутри конфигурации. У неё есть те же части:

  • 🧩 модуль объекта — серверный код, процедуры и функции обработки;
  • 🖥️ формы — окна с полями, табличными частями и кнопками;
  • 📄 макеты — табличные документы для печати, шаблоны, двоичные данные;
  • 📋 реквизиты и табличные части — переменные, в которых обработка хранит введённые значения.

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

Физически .epf — двоичный контейнер. Блокнотом или архиватором его не прочитать. Для анализа и хранения в системе контроля версий файл раскладывают на XML-файлы и модули командой платформы:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" DESIGNER /F"D:\Bases\Empty" /DumpExternalDataProcessorOrReportToFiles "D:\Src\Obrabotka\Obrabotka.xml" "D:\Downloads\Obrabotka.epf"

Обратная сборка из файлов — ключ /LoadExternalDataProcessorOrReportFromFiles с теми же параметрами в обратном порядке: сначала XML, затем путь к будущему .epf. Номер платформы в пути подставьте свой.

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

EPF и другие файлы 1С: как не перепутать

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

РасширениеЧто этоГде открывается
.epfВнешняя обработкаФайл → Открыть в режиме 1С:Предприятие, Конфигуратор
.erfВнешний отчёт (на схеме компоновки данных)Так же, как .epf
.cfeРасширение конфигурацииАдминистрирование → Печатные формы, отчеты и обработки → Расширения или Конфигуратор
.cfПолный файл конфигурацииТолько Конфигуратор
.cfuФайл обновления конфигурацииТолько Конфигуратор, режим обновления
.dtВыгрузка информационной базы целикомКонфигуратор: Администрирование → Загрузить информационную базу
.mxlТабличный документ (бланк, таблица)Файл → Открыть в Предприятии
.ertВнешний отчёт или обработка 1С 7.7Только 1С 7.7, в 8.3 не запускается

Отдельно про .cfe. Расширение и внешняя обработка решают похожие задачи, но работают по-разному. Расширение встраивается в конфигурацию: может менять типовые формы, добавлять реквизиты, перехватывать процедуры. Обработка живёт сама по себе и только читает или записывает данные через обычные механизмы. Если нужно поменять поведение типового документа — это расширение. Если нужна отдельная кнопка «Загрузить» или «Заполнить» — хватит .epf.

Как открыть внешнюю обработку в 1С 8.3

Разовый запуск через меню

  1. Запустите базу в режиме 1С:Предприятие.
  2. Откройте главное меню: кнопка с тремя полосками в левом верхнем углу окна (в интерфейсе «Такси»).
  3. Выберите Файл → Открыть или нажмите Ctrl+O.
  4. Укажите файл .epf на диске.
  5. Если появилось предупреждение безопасности, прочитайте его и подтвердите запуск, только если доверяете источнику.
  6. Откроется основная форма обработки — работайте с ней.

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

Почему файл не открывается

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

Как создать свою обработку EPF в Конфигураторе

В режиме 1С:Предприятие файл .epf создать нельзя: там его только запускают. Разработка идёт в Конфигураторе. Конфигурацию базы при этом открывать не обязательно, а значит, можно спокойно работать даже в рабочей базе, ничего в ней не меняя.

Шаг 1. Новая обработка

  1. Запустите базу в режиме Конфигуратор.
  2. Меню Файл → Новый, тип документа — Внешняя обработка.
  3. В открывшемся окне задайте имя латиницей или кириллицей без пробелов, например ПодсчетЭлементов, и синоним — то, что увидит пользователь.

Шаг 2. Форма и команда

  1. На вкладке Формы нажмите кнопку добавления и создайте основную форму обработки.
  2. В редакторе формы перейдите на вкладку Команды, добавьте команду Посчитать.
  3. Перетащите команду на форму — появится кнопка.
  4. В свойствах команды нажмите на лупу у поля Действие — платформа создаст обработчик в модуле формы.

Шаг 3. Код

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

&НаСервере
Процедура ПосчитатьНаСервере()

	Для Каждого МетаСправочник Из Метаданные.Справочники Цикл
		Запрос = Новый Запрос;
		Запрос.Текст = СтрШаблон(
			"ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Всего ИЗ Справочник.%1",
			МетаСправочник.Имя);
		Выборка = Запрос.Выполнить().Выбрать();
		Выборка.Следующий();
		Сообщить(СтрШаблон("%1: %2",
			МетаСправочник.Синоним,
			Формат(Выборка.Всего, "ЧН=0; ЧГ=0")));
	КонецЦикла;

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

&НаКлиенте
Процедура Посчитать(Команда)
	ПосчитатьНаСервере();
КонецПроцедуры

Запрос с КОЛИЧЕСТВО(*) всегда возвращает одну строку, поэтому Выборка.Следующий() без проверки здесь безопасен. Параметр ЧН=0 нужен, чтобы пустой справочник показался как «0», а не пустой строкой.

Шаг 4. Сохранение и отладка

  1. Файл → Сохранить как — укажите путь и имя файла с расширением .epf.
  2. Запустите отладку (F5), в открывшемся Предприятии откройте сохранённый файл через Файл → Открыть.
  3. Точки останова в модулях обработки работают, если открывать тот же файл, который сохранён из Конфигуратора.

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

Современная альтернатива Конфигуратору — 1C:Enterprise Development Tools (EDT). Там обработка хранится в виде исходников, а .epf собирается экспортом. Для одиночных небольших обработок Конфигуратора хватает.

Проверка внешней обработки перед запуском в рабочей базе

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

Чужую обработку сначала запускайте на копии базы, а не на рабочей. Особенно если она что-то записывает или удаляет.

Что искать в коде

Откройте файл в Конфигураторе (Файл → Открыть) и просмотрите модули объекта и форм. Поиск по тексту (Ctrl+F) по словам из таблицы быстро показывает опасные места.

Что встречается в кодеЧем опасно
Выполнить(, Вычислить(Выполняет произвольный текст: реальная логика может прийти из макета, файла или интернета
УдалитьФайлы, .Удалить() у объектовУдаление файлов на диске или данных в базе без пометки
ОбменДанными.Загрузка = ИстинаЗапись в обход проверок и подписок, без контроля заполнения
УстановитьПривилегированныйРежим(Истина)Обход ограничений прав пользователя
HTTPСоединение, FTPСоединение, ИнтернетПочтовоеСообщениеПередача данных наружу
Новый COMОбъект, ЗапуститьПриложение, КомандаСистемыЗапуск сторонних программ и команд операционной системы

Сами по себе эти слова не значат, что обработка вредная: загрузка из Excel без COM-объекта или файлов не обходится. Вопрос в том, совпадает ли поведение с заявленным назначением. Обработка «Печать накладной», которая открывает HTTPСоединение, — повод задать вопросы автору.

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

Безопасный режим

В типовых конфигурациях на БСП зарегистрированная обработка по умолчанию выполняется в безопасном режиме. В нём запрещены работа с файлами, внешние компоненты, COM-объекты и привилегированный режим. Если обработка требует снять безопасный режим, это её особенность, а не повод снимать ограничение не глядя.

Перед первым запуском чужой обработки
Выполнено: 0 / 6

Подключение обработки к базе через «Дополнительные отчеты и обработки»

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

Как включить и добавить

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

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

Почему файл не добавляется

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

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

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

	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = "Подсчитать элементы";
	Команда.Идентификатор = "Посчитать";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	Команда.ПоказыватьОповещение = Ложь;

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

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

Функция пишется в модуле объекта (не формы). Строка с версией БСП указывает, по правилам какой версии библиотеки описаны параметры.

Какие бывают виды

ВидГде появляетсяПример задачи
Дополнительная обработкаВ разделе программыГрупповая правка, загрузка из файла
Дополнительный отчётВ разделе, среди отчётовСвоя аналитика по продажам
Печатная формаВ меню «Печать» документаСчёт со своим логотипом и полями
Заполнение объектаВ форме документаЗаполнение табличной части по своему правилу
Создание связанных объектовВ форме документаСоздание нескольких документов на основании

Автоматический запуск и интеграция через EPF

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

Запуск из командной строки

Параметр /Execute открывает базу и сразу запускает указанную обработку:

"C:\Program Files\1cv8\8.3.24.1691\bin\1cv8.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Робот" /P"пароль" /Execute "D:\Scripts\Vygruzka.epf"

Для клиент-серверной базы вместо /F указывают /S"сервер\имя_базы". Такую строку ставят в планировщик заданий Windows. Чтобы окно закрылось само, в обработке при открытии формы выполняют работу и вызывают ЗавершитьРаботуСистемы(Ложь).

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

Регламентный запуск внутри базы

Зарегистрированная дополнительная обработка с командой вида «вызов серверного метода» может выполняться по расписанию. Расписание задаётся в карточке обработки, на строке команды. Работает это через регламентные задания, поэтому в файловой базе выполняется, только пока база открыта у кого-то из пользователей или настроен отдельный запуск. В клиент-серверной базе задания выполняет сервер 1С.

Интеграция

Через .epf чаще всего делают:

  • 📥 загрузку прайсов, остатков и выписок из Excel, CSV, XML;
  • 📤 выгрузку данных для сайта, маркетплейса, внешнего склада;
  • 🔗 обращение к HTTP-сервисам банков и сервисов доставки;
  • 🧹 обслуживающие операции: поиск дублей, перезаполнение реквизитов по правилу.

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

Можно ли открыть EPF без 1С?
Нет. Файл читает только платформа 1С:Предприятие. Посмотреть код можно в Конфигураторе любой базы или после разбора файла на XML командой платформы.
Чем внешняя обработка отличается от внешнего отчёта?
Отчёт .erf строится на схеме компоновки данных и нужен для вывода таблиц с отбором и группировками. Обработка .epf выполняет действия: создаёт, меняет, загружает данные.
Откроется ли обработка от 8.2 в 8.3?
Файл откроется, но обычные формы 8.2 не показываются в тонком клиенте. Кроме того, код может обращаться к объектам старой конфигурации, которых в новой нет.
Почему обработка работает у администратора и не работает у бухгалтера?
Внешняя обработка выполняется с правами запустившего. Если у пользователя нет прав на нужные справочники или документы, код получит ошибку доступа.
Где хранится обработка, добавленная в «Дополнительные отчеты и обработки»?
Внутри информационной базы, в справочнике дополнительных отчётов и обработок. Исходный файл после загрузки можно удалить с диска — он попадёт и в резервную копию базы.