Внешняя обработка .epf: запуск, подключение и разбор кода в 1С 8.3
Содержание
Открыть EPF файл в 1С быстрее всего так: запустите базу в режиме 1С:Предприятие, нажмите Ctrl+O (или Главное меню → Файл → Открыть), выберите файл .epf и подтвердите предупреждение безопасности. Обработка откроется в отдельном окне, в базе её регистрировать не нужно.
EPF — это внешняя обработка: файл с формой и программным кодом, который живёт вне конфигурации. Его используют для разовых задач: загрузить данные из Excel , перепровести документы по условию, исправить реквизиты пачкой. Способ запуска зависит от задачи: разовый — через меню, постоянный — через регистрацию в базе, автоматический — через код или ключ командной строки.
Способ 1. Разовый запуск внешней обработки в режиме 1С:Предприятие
Это вариант «запустил, поработал, закрыл». Подходит, когда обработку прислал программист или сопровождение и она нужна один-два раза.
- Запустите нужную информационную базу в режиме 1С:Предприятие (тонкий клиент подходит).
- Откройте главное меню: кнопка с тремя полосками в левом верхнем углу окна.
- Выберите
Файл → Открытьили нажмитеCtrl+O. - Укажите файл
.epfна диске и нажмите «Открыть». - Платформа покажет предупреждение о том, что файл может содержать опасный код. Если источник надёжный — нажмите «Да».
- Откроется основная форма обработки. Дальше работайте по её инструкции.
Так же открываются внешние отчёты — файлы .erf. Принцип и права те же.
Что нужно, чтобы пункт сработал
- 🔑 Право на интерактивное открытие. В конфигурации у роли пользователя должно быть право «Интерактивное открытие внешних обработок». У администратора с полными правами оно есть. Обычному бухгалтеру его часто не дают, и тогда платформа сообщит о нарушении прав доступа.
- 🛡 Защита от опасных действий. С платформы 8.3.9 при каждом открытии внешнего файла появляется предупреждение. Его отключают в свойствах пользователя:
Конфигуратор → Администрирование → Пользователи, карточка пользователя, флаг «Защита от опасных действий». Снимайте флаг только тем, кто понимает, что запускает. - 🌐 Веб-клиент. В браузере файл тоже открывается через
Файл → Открыть, но браузер сначала загрузит его на сервер. Иногда для этого нужно расширение работы с файлами.
Как выдать бухгалтеру право открывать обработки
В конфигурациях на БСП права выдают не напрямую ролью, а через группы доступа:
- Откройте
Администрирование → Настройки пользователей и прав → Группы доступа. - Найдите группу с профилем, в состав которого входит роль «Интерактивное открытие внешних отчетов и обработок». Если такой нет — создайте профиль на основе существующего и добавьте роль.
- Включите в группу нужного пользователя и запишите.
- Пользователь должен перезайти в программу, чтобы права применились.
Если выдавать такое право не хочется, есть путь безопаснее: зарегистрировать конкретную обработку (способ 3) и открыть доступ только к ней.
Внешняя обработка выполняется с правами того, кто её запустил. Если вы администратор, код может изменить или удалить любые данные. Запускайте незнакомые файлы сначала на копии базы.
Способ 2. Открыть файл в Конфигураторе: правка, просмотр кода и отладка
Конфигуратор нужен, когда обработку надо посмотреть изнутри, поправить или отладить. Для этого не требуется монопольный доступ и не нужно открывать конфигурацию базы.
- Запустите базу в режиме Конфигуратор.
- Выберите
Файл → Открытьи укажите файл.epf. - Откроется дерево внешней обработки: реквизиты, табличные части, формы, макеты.
- Модуль объекта — правой кнопкой по корню дерева → «Открыть модуль объекта». Модули форм — на вкладке «Модуль» внутри формы.
- После правки сохраните файл:
Файл → Сохранить(Ctrl+S).
Как отладить внешнюю обработку
Типичная задача: обработка падает с ошибкой, а где именно — непонятно.
- Откройте файл
.epfв Конфигураторе. - Поставьте точку останова (
F9) в нужной строке модуля. - Запустите отладку:
Отладка → Начать отладку → Тонкий клиентилиF5. - В открывшемся 1С:Предприятии откройте тот же самый файл через
Файл → Открыть. - Выполнение остановится на точке, можно смотреть значения переменных (
Shift+F9— вычислить выражение).
Путь к файлу в Конфигураторе и в Предприятии должен совпадать. Если открыть копию из другой папки, точки останова не сработают. Это самая частая причина фразы «отладчик не останавливается».
Внешнюю обработку можно создать с нуля здесь же: Файл → Новый → Внешняя обработка. Удобно для разовых скриптов, которые жалко встраивать в конфигурацию.
Способ 3. Подключить EPF через «Дополнительные отчёты и обработки»
Если обработкой пользуются регулярно, её лучше зарегистрировать в базе. Тогда файл хранится внутри базы, команда появляется в нужном разделе, а права можно выдать конкретным пользователям без права открывать любые внешние файлы.
Механизм есть в типовых конфигурациях на БСП: Бухгалтерия 3.0, ЗУП 3.1, УТ 11, КА 2, ERP.
Шаг 1. Включите механизм
| Конфигурация | Где включается |
|---|---|
| Бухгалтерия предприятия 3.0 | Администрирование → Печатные формы, отчеты и обработки |
| ЗУП 3.1 | Администрирование → Печатные формы, отчеты и обработки |
| УТ 11, КА 2, ERP | НСИ и администрирование → Печатные формы, отчеты и обработки |
Установите флажок «Дополнительные отчеты и обработки». Рядом станет активной ссылка с тем же названием.
Шаг 2. Добавьте файл
- Перейдите по ссылке «Дополнительные отчеты и обработки».
- Нажмите «Добавить из файла» (в некоторых релизах — «Создать», затем выбор файла).
- Подтвердите предупреждение безопасности и выберите
.epf. - Программа прочитает сведения из файла: наименование, вид, версию, список команд.
Шаг 3. Настройте размещение и доступ
- 📂 Размещение — в каких разделах появится команда (например, «Банк и касса» или «Зарплата»). Для печатных форм и обработок заполнения вместо разделов указываются документы и справочники.
- 👥 Быстрый доступ — каким пользователям показывать команду.
- 🔄 Публикация — «Используется», «Режим отладки» или «Отключена». Режим отладки показывает обработку только администраторам: удобно для проверки.
Нажмите «Записать и закрыть». Команда появится в выбранном разделе, в группе дополнительных обработок.
Виды дополнительных обработок
| Вид | Где вызывается |
|---|---|
| Дополнительная обработка | Из раздела, как отдельная команда |
| Дополнительный отчёт | Из раздела, как отчёт |
| Печатная форма | Кнопка «Печать» в документе или справочнике |
| Заполнение объекта | Кнопка «Заполнить» в форме объекта |
| Создание связанных объектов | Команда «Создать на основании» |
Не каждый EPF можно зарегистрировать. В модуле объекта должна быть экспортная функция СведенияОВнешнейОбработке(), которая описывает вид и команды. Если её нет, программа откажется добавлять файл. Такую обработку можно только открыть через Файл → Открыть или доработать в Конфигураторе.
Способ 4. Открыть внешнюю обработку кодом и из командной строки
Программное открытие нужно, когда обработка запускается из другой обработки, по расписанию или прямо при старте базы.
Ключ /Execute при запуске 1С
Платформа умеет запустить внешнюю обработку сразу после входа в базу. Пример ярлыка:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /N"Администратор" /P"" /Execute"D:\Tools\ZagruzkaCen.epf"
/F— путь к файловой базе (для серверной —/S"Сервер\ИмяБазы");/Nи/P— пользователь и пароль;/Execute— какой файл.epfоткрыть после запуска.
Так делают ярлык «для склада», который сразу открывает обработку загрузки, или ночное задание через планировщик Windows.
Пароль в ярлыке или bat-файле лежит открытым текстом. Для автоматических запусков заведите отдельного пользователя с минимальными правами.
Подключение из управляемой формы
В тонком клиенте файл сначала передают на сервер во временное хранилище, затем подключают и открывают форму:
&НаКлиенте
Процедура ОткрытьВнешнююОбработку(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
ИмяОбработки = ПодключитьНаСервере(Адрес);
ОткрытьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма");
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПодключитьНаСервере(Адрес)
Возврат ВнешниеОбработки.Подключить(Адрес, , Ложь);
КонецФункции
Третий параметр Подключить — безопасный режим. По умолчанию он включён (Истина), и обработка не сможет работать с файлами, COM-объектами и внешними программами. Значение Ложь снимает ограничения, но требует соответствующих прав.
Если обработка нужна только как объект (без формы), на сервере её создают так: ВнешниеОбработки.Создать(ПолноеИмяФайла). Файл при этом должен лежать по пути, доступному именно серверу 1С, а не компьютеру пользователя.
Почему EPF не открывается: версии платформы и режимы
Большинство отказов связаны с тем, где и в какой версии файл создан.
| Что видите | Причина | Что сделать |
|---|---|---|
Ошибка формата потока или сообщение о неверном формате файла | Файл сохранён в более новой платформе, чем та, в которой его открывают, или он повреждён | Обновите платформу на рабочем месте до номера не ниже того, в котором создан файл, или пересохраните обработку в нужной версии |
| Форма не открывается в тонком клиенте | Обработка сделана на обычных формах (времена 8.2) | Запустите толстый клиент в режиме обычного приложения или переделайте форму на управляемую |
Поле объекта не обнаружено при выполнении | Обработку писали под другую конфигурацию или релиз, нужного реквизита нет | Попросите автора версию под вашу конфигурацию и релиз |
| Нарушение прав доступа | Нет права на открытие внешних обработок | Выдать право или зарегистрировать обработку через дополнительные обработки |
| В веб-клиенте ничего не происходит | Блокировка загрузки файла в браузере | Разрешите расширение работы с файлами или запустите тонкий клиент |
Двойной щелчок по файлу
Иногда пытаются открыть .epf двойным щелчком в проводнике. Обработка не может работать сама по себе: ей нужна база, к которой она подключится. Поэтому надёжнее сначала войти в базу, а файл открыть уже изнутри программы.
Как запустить обработку на обычных формах
Старые обработки с обычными формами открываются в толстом клиенте. Для этого в ярлык или в настройки базы в окне запуска добавляют ключ /RunModeOrdinaryApplication:
"C:\Program Files\1cv8\common\1cestart.exe" ENTERPRISE /F"D:\Bases\Buh" /RunModeOrdinaryApplication
Типовые конфигурации на управляемых формах в таком режиме выглядят непривычно, а часть команд может работать некорректно. Используйте его только для запуска старой обработки, а не для повседневной работы.
Обработки под 8.2 в базе 8.3
Файл из 8.2 платформа 8.3 обычно открывает. Проблемы начинаются в коде: модальные окна (Вопрос(), Предупреждение()) в конфигурациях с режимом без модальности вызывают ошибку. Это лечится только правкой кода в Конфигураторе.
Безопасность: как проверить содержимое EPF до запуска
Внешняя обработка — полноценная программа. В неё можно встроить что угодно: от удаления документов до отправки базы на чужой сервер. Чужой файл из интернета запускать вслепую нельзя.
Порядок проверки
- Откройте файл в Конфигураторе, а не в Предприятии: в Конфигураторе код не выполняется.
- Просмотрите модуль объекта и модули всех форм.
- Найдите поиском (
Ctrl+F, область «Во всех модулях») опасные конструкции. - Если модуль закрыт паролем и текст не виден — считайте это поводом не запускать обработку в рабочей базе.
- Первый запуск делайте на копии базы.
Что искать в коде
- 💣
УдалитьОбъекты,.Удалить(),УстановитьПометкуУдаления— массовое удаление данных ; - 🖥
КомандаСистемы,ЗапуститьПриложение— запуск внешних программ; - 🔌
Новый COMОбъект— управление Windows и другими программами; - 🌐
HTTPСоединение,FTPСоединение,ИнтернетПочта— передача данных наружу; - 📁
УдалитьФайлы,КопироватьФайл— работа с файлами на диске; - ⚙️
Выполнить(,Вычислить(— выполнение произвольного кода из строки.
Наличие этих слов ещё не значит, что файл вредоносный: загрузка из Excel законно использует COM, а обмен — HTTP. Вопрос в том, совпадает ли поведение с описанием обработки.
Для сравнения версий и хранения в Git внешнюю обработку можно выгрузить в XML-файлы: в пакетном режиме Конфигуратора есть ключ /DumpExternalDataProcessorOrReportToFiles. Так видно, какие строки кода изменились между версиями.