Внешняя обработка .epf: от запуска чужого файла до своей разработки и подключения в базу
Содержание
Файл с расширением .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С:Предприятие.
- Откройте главное меню: кнопка с тремя полосками в левом верхнем углу окна (в интерфейсе «Такси»).
- Выберите
Файл → Открытьили нажмитеCtrl+O. - Укажите файл
.epfна диске. - Если появилось предупреждение безопасности, прочитайте его и подтвердите запуск, только если доверяете источнику.
- Откроется основная форма обработки — работайте с ней.
После закрытия формы обработка выгружается из памяти. При следующем запуске её снова придётся выбирать на диске.
Почему файл не открывается
Как создать свою обработку EPF в Конфигураторе
В режиме 1С:Предприятие файл .epf создать нельзя: там его только запускают. Разработка идёт в Конфигураторе. Конфигурацию базы при этом открывать не обязательно, а значит, можно спокойно работать даже в рабочей базе, ничего в ней не меняя.
Шаг 1. Новая обработка
- Запустите базу в режиме
Конфигуратор. - Меню
Файл → Новый, тип документа —Внешняя обработка. - В открывшемся окне задайте имя латиницей или кириллицей без пробелов, например
ПодсчетЭлементов, и синоним — то, что увидит пользователь.
Шаг 2. Форма и команда
- На вкладке
Формынажмите кнопку добавления и создайте основную форму обработки. - В редакторе формы перейдите на вкладку
Команды, добавьте командуПосчитать. - Перетащите команду на форму — появится кнопка.
- В свойствах команды нажмите на лупу у поля
Действие— платформа создаст обработчик в модуле формы.
Шаг 3. Код
Пример ниже подходит для любой конфигурации: он обходит все справочники базы и выводит, сколько в каждом элементов. Удобно для первичной оценки чужой базы.
&НаСервере
Процедура ПосчитатьНаСервере()
Для Каждого МетаСправочник Из Метаданные.Справочники Цикл
Запрос = Новый Запрос;
Запрос.Текст = СтрШаблон(
"ВЫБРАТЬ КОЛИЧЕСТВО(*) КАК Всего ИЗ Справочник.%1",
МетаСправочник.Имя);
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Сообщить(СтрШаблон("%1: %2",
МетаСправочник.Синоним,
Формат(Выборка.Всего, "ЧН=0; ЧГ=0")));
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура Посчитать(Команда)
ПосчитатьНаСервере();
КонецПроцедуры
Запрос с КОЛИЧЕСТВО(*) всегда возвращает одну строку, поэтому Выборка.Следующий() без проверки здесь безопасен. Параметр ЧН=0 нужен, чтобы пустой справочник показался как «0», а не пустой строкой.
Шаг 4. Сохранение и отладка
Файл → Сохранить как— укажите путь и имя файла с расширением.epf.- Запустите отладку (
F5), в открывшемся Предприятии откройте сохранённый файл черезФайл → Открыть. - Точки останова в модулях обработки работают, если открывать тот же файл, который сохранён из Конфигуратора.
После каждой правки сохраняйте файл в Конфигураторе и открывайте обработку в Предприятии заново. Уже открытая форма продолжает работать со старым кодом.
Современная альтернатива Конфигуратору — 1C:Enterprise Development Tools (EDT). Там обработка хранится в виде исходников, а .epf собирается экспортом. Для одиночных небольших обработок Конфигуратора хватает.
Проверка внешней обработки перед запуском в рабочей базе
Внешняя обработка выполняется с правами того, кто её запустил. Если её открыл главный бухгалтер с полными правами, код может сделать всё то же самое: удалить документы, перепровести период, отправить данные во внешний сервис. Предупреждение платформы ничего не проверяет — оно лишь напоминает о риске.
Чужую обработку сначала запускайте на копии базы, а не на рабочей. Особенно если она что-то записывает или удаляет.
Что искать в коде
Откройте файл в Конфигураторе (Файл → Открыть) и просмотрите модули объекта и форм. Поиск по тексту (Ctrl+F) по словам из таблицы быстро показывает опасные места.
| Что встречается в коде | Чем опасно |
|---|---|
Выполнить(, Вычислить( | Выполняет произвольный текст: реальная логика может прийти из макета, файла или интернета |
УдалитьФайлы, .Удалить() у объектов | Удаление файлов на диске или данных в базе без пометки |
ОбменДанными.Загрузка = Истина | Запись в обход проверок и подписок, без контроля заполнения |
УстановитьПривилегированныйРежим(Истина) | Обход ограничений прав пользователя |
HTTPСоединение, FTPСоединение, ИнтернетПочтовоеСообщение | Передача данных наружу |
Новый COMОбъект, ЗапуститьПриложение, КомандаСистемы | Запуск сторонних программ и команд операционной системы |
Сами по себе эти слова не значат, что обработка вредная: загрузка из Excel
без COM-объекта или файлов не обходится. Вопрос в том, совпадает ли поведение с заявленным назначением. Обработка «Печать накладной», которая открывает HTTPСоединение, — повод задать вопросы автору.
Модуль, закрытый паролем или поставленный без исходного текста, проверить нельзя. Такой файл запускайте только от поставщика, с которым есть договор, и только на копии до первого боевого запуска.
Безопасный режим
В типовых конфигурациях на БСП зарегистрированная обработка по умолчанию выполняется в безопасном режиме. В нём запрещены работа с файлами, внешние компоненты, COM-объекты и привилегированный режим. Если обработка требует снять безопасный режим, это её особенность, а не повод снимать ограничение не глядя.
Подключение обработки к базе через «Дополнительные отчеты и обработки»
Разовый запуск с диска неудобен: файл теряется, у каждого бухгалтера своя копия, непонятно, какая версия актуальна. Типовые конфигурации на БСП (БП 3.0, ЗУП 3.1, УТ 11 и другие) умеют хранить внешние обработки внутри базы.
Как включить и добавить
- Откройте
Администрирование → Печатные формы, отчеты и обработки. - Включите флажок
Дополнительные отчеты и обработки. - Перейдите по одноимённой ссылке и нажмите
Добавить из файла. - Выберите
.epf. Платформа прочитает сведения об обработке: вид, команды, разделы, где она появится. - Укажите разделы и пользователей, которым она доступна, и запишите карточку.
Обработка с этого момента хранится в базе. Пользователи запускают её из раздела, а не с диска. Новую версию загружают в ту же карточку командой обновления из файла — у всех сразу актуальный код.
Почему файл не добавляется
Карточка добавления понимает только обработки, в модуле объекта которых есть экспортная функция СведенияОВнешнейОбработке(). Обычная обработка из примера выше без неё не зарегистрируется. Минимальный вариант для вида «Дополнительная обработка»:
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("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С?
Чем внешняя обработка отличается от внешнего отчёта?
.erf строится на схеме компоновки данных и нужен для вывода таблиц с отбором и группировками. Обработка .epf выполняет действия: создаёт, меняет, загружает данные.