Разработка и Конфигурация · 12 мин
Внешняя обработка в 1С: что это и как с ней работать
Внешняя обработка в 1С — что это, чем отличается от отчёта и расширения. Как создать, подключить через БСП, типичные ошибки и ограничения безопасности.
Внешняя обработка в 1С — это файл с расширением .epf, который содержит программный код, формы и макеты, но хранится отдельно от конфигурации базы данных. Его можно открыть в любой информационной базе через меню «Файл — Открыть» и выполнить нужные действия: заполнить табличную часть документа, выгрузить данные, сформировать печатную форму. При этом конфигурация остаётся нетронутой, что критично для баз на поддержке, где любое изменение усложняет обновление.
По сути внешняя обработка — это тот же объект метаданных «Обработка», только вынесенный за пределы конфигурации. Внутри неё могут быть формы, макеты, модуль объекта и модуль формы с кодом на встроенном языке 1С. Ограничение одно, но принципиальное: обработка не может добавлять новые объекты в конфигурацию — справочники, документы, регистры. Она работает только с тем, что уже есть в базе.
На практике внешние обработки используют постоянно: бухгалтер запускает обработку закрытия месяца от внедренца, программист тестирует гипотезу на копии базы, не трогая конфигуратор, а служба поддержки присылает клиенту файл для исправления данных. Понимание того, как устроен этот механизм, помогает выбрать правильный инструмент и не сломать рабочую базу.
Что представляет собой внешняя обработка и чем отличается от других механизмов
Файл внешней обработки имеет расширение .epf. Рядом с ним часто упоминают внешний отчёт с расширением .erf: технически это почти то же самое, но отчёт ориентирован на построение результата через систему компоновки данных, а обработка — на выполнение действий над данными. Граница условна: обработка может выводить отчёт, а отчёт — содержать кнопки с произвольным кодом.
Важно отличать внешнюю обработку от расширения конфигурации (.cfe). Расширение подключается к базе постоянно и может переопределять формы и модули существующих объектов. Обработка же «живёт» только в момент выполнения: открыли — поработали — закрыли. Если задача требует постоянного изменения поведения программы, нужна доработка конфигурации или расширение, а не обработка.
Что выбрать под задачу
Разовые действия: заполнение данных, пакетные изменения, сервисные операции. Не трогает конфигурацию, легко передавать файлом.
Формирование отчётов на СКД без встраивания в конфигурацию. Можно подключить в подсистему отчётов через БСП.
Постоянные доработки форм и модулей без снятия конфигурации с поддержки. Требует аккуратности при обновлении.
Глубокие изменения логики. Усложняет обновление, применять только когда остальные варианты не подходят.
Какие задачи решают внешние обработки
Классический сценарий — пакетное изменение данных. Например, нужно перенумеровать документы, заполнить пустой реквизит у тысячи элементов справочника или пометить на удаление устаревшие записи. Писать такое в конфигураторе через доработку нерационально: обработка решает задачу за один запуск и больше не нужна.
Вторая большая группа — печатные формы и обмены. Внешняя печатная форма подключается к типовой конфигурации и появляется в меню «Печать» документа, не требуя доработки. Обработки обмена выгружают данные в Excel, CSV или XML по заданным правилам.
Третья группа — сервисные инструменты разработчика и администратора: консоль запросов, редактор кода, инструменты поиска и замены ссылок, анализ прав доступа. Такие обработки распространяются как готовые продукты и запускаются в любой базе.
Как создать внешнюю обработку в конфигураторе
Создание начинается в конфигураторе: меню «Файл — Новый — Внешняя обработка». Дальше добавляются нужные элементы: основная форма (для управляемого приложения — управляемая форма), макеты табличных документов или схем компоновки, код в модуле объекта и модуле формы. Сохраняется всё это в файл .epf на диске.
Если обработка должна работать в управляемом приложении, форму нужно создавать именно управляемую — обычные формы в тонком и веб-клиенте не откроются. В модуле объекта обычно размещают серверную логику работы с данными, в модуле формы — обработчики команд и событий интерфейса.
- 1Откройте конфигуратор любой базы (подойдёт и пустая) и выберите «Файл — Новый — Внешняя обработка».
- 2Задайте имя и синоним, добавьте основную форму типа «Управляемая форма».
- 3На форме создайте команду и кнопку, в модуле напишите код действия (например, запрос к справочнику).
- 4Сохраните обработку в файл .epf через «Файл — Сохранить как».
- 5Откройте файл в режиме 1С:Предприятие через «Файл — Открыть» и проверьте работу кнопки.
Проверять результат лучше на копии рабочей базы или на тестовой базе с похожими данными. Обработка, которая корректно отработала на пустой базе, может вести себя иначе на реальных объёмах: дольше выполняться, упираться в блокировки, обнаруживать непредусмотренные значения реквизитов.
Как подключить обработку через «Дополнительные отчеты и обработки»
Открытие через «Файл — Открыть» подходит для разовых запусков, но неудобно для пользователей. В конфигурациях на БСП есть штатный механизм: раздел «Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки». Туда файл загружается один раз, после чего появляется в интерфейсе у пользователей с нужными правами.
Чтобы обработка корректно зарегистрировалась в этом механизме, в её модуле объекта должна быть функция СведенияОВнешнейОбработке(), возвращающая структуру с параметрами регистрации: вид обработки (печатная форма, заполнение объекта, отчёт, дополнительная обработка), версия, назначение (к каким документам привязана) и таблица команд. Без этой функции БСП откажется загружать файл.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
Возврат ПараметрыРегистрации;
КонецФункцииПараметр «БезопасныйРежим» заслуживает отдельного внимания. Если установить его в Истина, код обработки выполнится в безопасном режиме: без доступа к файловой системе сервера, COM-объектам и внешним компонентам. Для обработок, которые только читают и пишут данные базы, это правильный выбор — он снижает риск, если в файле окажется вредоносный код.
Безопасность и права доступа
Внешняя обработка — это исполняемый код, и он может делать с базой всё то же, что и пользователь, который её запустил, плюс потенциально опасные действия на уровне операционной системы, если безопасный режим отключён. Файл, полученный из непроверенного источника, способен удалить данные, выгрузить их наружу или зашифровать. Поэтому правило простое: запускать только обработки из доверенных источников, а сомнительные — сначала открывать в конфигураторе и просматривать код.
Дополнительный уровень защиты — профили групп доступа. Право на открытие внешних отчётов и обработок можно отключить у рядовых пользователей и оставить только администраторам. В типовых конфигурациях за это отвечает роль «Открытие внешних отчетов и обработок».
Типичные ошибки при работе с внешними обработками
Самая частая проблема — обработка не открывается в управляемом приложении, потому что создана с обычной формой. Вторая по популярности — отказ БСП загружать файл из-за отсутствия функции СведенияОВнешнейОбработке или ошибок в её структуре. Обе ситуации диагностируются быстро, если знать, куда смотреть.
Отдельный класс ошибок связан с данными: обработка падает на конкретном документе из-за незаполненного реквизита, которого разработчик не ожидал, или зависает на больших объёмах из-за запроса в цикле. Такие дефекты всплывают только на реальной базе, что ещё раз подчёркивает ценность тестирования на копии.
Как проверить результат
Обработка открывается в нужном клиенте без ошибок платформы
Сообщение о невозможности открытия обычной формы или ошибка компиляции модуля
Файл загружается, команды появляются в интерфейсе у пользователей
Ошибка «не найдена функция СведенияОВнешнейОбработке»
Данные изменены ровно в ожидаемых объектах, количество совпадает с расчётным
Изменения затронули лишние объекты или выполнились частично
Ограничения механизма и когда обработки недостаточно
Внешняя обработка не может добавить в конфигурацию новые объекты метаданных, изменить существующие формы документов или подменить типовые модули. Если нужно, чтобы при записи документа всегда выполнялась дополнительная проверка — это задача для расширения или доработки, обработка здесь бессильна, потому что выполняется только при явном запуске.
Ещё одно ограничение — регламентные задания. Сама по себе обработка не запустится по расписанию, если не подключить её через механизм дополнительных обработок БСП с настройкой расписания либо не вызывать внешними средствами (например, через запуск пакетного режима 1С из планировщика задач операционной системы).
Как выбрать действие
Храните исходники обработок в системе контроля версий или хотя бы в структурированном каталоге с указанием версии в имени файла. Через полгода по одному файлу .epf сложно вспомнить, какая это редакция и для какой базы она писалась, а функция СведенияОВнешнейОбработке с полем «Версия» сильно упрощает идентификацию.
Частые вопросы о внешних обработках в 1С
Чем внешняя обработка отличается от внешнего отчёта?
Технически — почти ничем, оба файла содержат код, формы и макеты. Разница в назначении: отчёт (.erf) ориентирован на формирование результата через СКД, обработка (.epf) — на выполнение действий. В БСП для них предусмотрены разные виды регистрации, но механизм подключения общий.
Можно ли открыть внешнюю обработку в базе без конфигуратора?
Да, именно так обработки обычно и используются. В режиме 1С:Предприятие выберите «Файл — Открыть» и укажите файл .epf. У пользователя должно быть право на открытие внешних отчётов и обработок, иначе платформа откажет в доступе.
Почему БСП не загружает мой файл?
Наиболее вероятная причина — в модуле объекта нет экспортной функции СведенияОВнешнейОбработке или она возвращает структуру с ошибками (не указан вид, версия, команды). Проверьте также, что файл не повреждён и сохранён именно как внешняя обработка, а не как отчёт при регистрации обработки и наоборот.
Безопасно ли запускать обработки, скачанные из интернета?
Только после проверки. Откройте файл в конфигураторе, просмотрите код модулей на предмет подозрительных вызовов (работа с файлами, COM-объекты, HTTP-запросы к неизвестным адресам). Первый запуск делайте на копии базы и по возможности в безопасном режиме. Популярные инструменты вроде консоли запросов лучше брать из первоисточников.
Можно ли отлаживать внешнюю обработку?
Да. Откройте обработку в конфигураторе, запустите отладку предприятия и откройте файл в отлаживаемом сеансе — точки останова в коде обработки сработают так же, как в коде конфигурации. Убедитесь, что в настройках отладки разрешена отладка внешних объектов.
Что делать, если обработка изменила данные с ошибкой?
Если перед запуском была сделана резервная копия — восстановите базу из неё. Без копии вариантов мало: исправлять данные другой обработкой, если изменения обратимы и известно, что именно затронуто. Поэтому изменяющие обработки стоит писать с транзакциями и режимом «только показать, что будет изменено» перед реальным выполнением.
Что важно запомнить
Внешняя обработка — это файл .epf с кодом и формами, который выполняется без изменения конфигурации. Для разового запуска достаточно «Файл — Открыть», для постоянного использования — подключение через «Дополнительные отчеты и обработки» с функцией СведенияОВнешнейОбработке. Проверяйте чужие файлы в конфигураторе, тестируйте на копии базы и не отключайте безопасный режим без необходимости.