К статье
Практический материал

Разработка и Конфигурация · 12 мин

Внешняя обработка в 1С: что это и как с ней работать

Внешняя обработка в 1С — что это, чем отличается от отчёта и расширения. Как создать, подключить через БСП, типичные ошибки и ограничения безопасности.

Внешняя обработка в 1С — это файл с расширением .epf, который содержит программный код, формы и макеты, но хранится отдельно от конфигурации базы данных. Его можно открыть в любой информационной базе через меню «Файл — Открыть» и выполнить нужные действия: заполнить табличную часть документа, выгрузить данные, сформировать печатную форму. При этом конфигурация остаётся нетронутой, что критично для баз на поддержке, где любое изменение усложняет обновление.

По сути внешняя обработка — это тот же объект метаданных «Обработка», только вынесенный за пределы конфигурации. Внутри неё могут быть формы, макеты, модуль объекта и модуль формы с кодом на встроенном языке 1С. Ограничение одно, но принципиальное: обработка не может добавлять новые объекты в конфигурацию — справочники, документы, регистры. Она работает только с тем, что уже есть в базе.

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

Что представляет собой внешняя обработка и чем отличается от других механизмов

Файл внешней обработки имеет расширение .epf. Рядом с ним часто упоминают внешний отчёт с расширением .erf: технически это почти то же самое, но отчёт ориентирован на построение результата через систему компоновки данных, а обработка — на выполнение действий над данными. Граница условна: обработка может выводить отчёт, а отчёт — содержать кнопки с произвольным кодом.

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

Что выбрать под задачу

Внешняя обработка (.epf)

Разовые действия: заполнение данных, пакетные изменения, сервисные операции. Не трогает конфигурацию, легко передавать файлом.

Внешний отчёт (.erf)

Формирование отчётов на СКД без встраивания в конфигурацию. Можно подключить в подсистему отчётов через БСП.

Расширение конфигурации (.cfe)

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

Доработка конфигурации

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

Какие задачи решают внешние обработки

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

Вторая большая группа — печатные формы и обмены. Внешняя печатная форма подключается к типовой конфигурации и появляется в меню «Печать» документа, не требуя доработки. Обработки обмена выгружают данные в Excel, CSV или XML по заданным правилам.

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

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

Создание начинается в конфигураторе: меню «Файл — Новый — Внешняя обработка». Дальше добавляются нужные элементы: основная форма (для управляемого приложения — управляемая форма), макеты табличных документов или схем компоновки, код в модуле объекта и модуле формы. Сохраняется всё это в файл .epf на диске.

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

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

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

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

Открытие через «Файл — Открыть» подходит для разовых запусков, но неудобно для пользователей. В конфигурациях на БСП есть штатный механизм: раздел «Администрирование — Печатные формы, отчеты и обработки — Дополнительные отчеты и обработки». Туда файл загружается один раз, после чего появляется в интерфейсе у пользователей с нужными правами.

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

bsl
Функция СведенияОВнешнейОбработке() Экспорт
	ПараметрыРегистрации = Новый Структура;
	ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
	ПараметрыРегистрации.Вставить("Версия", "1.0");
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
	Возврат ПараметрыРегистрации;
КонецФункции

Параметр «БезопасныйРежим» заслуживает отдельного внимания. Если установить его в Истина, код обработки выполнится в безопасном режиме: без доступа к файловой системе сервера, COM-объектам и внешним компонентам. Для обработок, которые только читают и пишут данные базы, это правильный выбор — он снижает риск, если в файле окажется вредоносный код.

Безопасность и права доступа

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

Дополнительный уровень защиты — профили групп доступа. Право на открытие внешних отчётов и обработок можно отключить у рядовых пользователей и оставить только администраторам. В типовых конфигурациях за это отвечает роль «Открытие внешних отчетов и обработок».

Типичные ошибки при работе с внешними обработками

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

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

Типичные ошибки
01
Создание обычной формы вместо управляемой — обработка не откроется в тонком и веб-клиенте.
02
Отсутствие функции СведенияОВнешнейОбработке — БСП откажется регистрировать файл.
03
Запрос внутри цикла по таблице значений — обработка работает минутами вместо секунд.
04
Запуск изменяющей обработки без резервной копии — при ошибке в логике данные придётся восстанавливать вручную.
05
Отключение безопасного режима для чужого файла — риск выполнения вредоносного кода.
06
Изменение данных без транзакции — при сбое часть объектов изменена, часть нет.
Контрольные точки

Как проверить результат

Открытие файла
Норма

Обработка открывается в нужном клиенте без ошибок платформы

Тревожный признак

Сообщение о невозможности открытия обычной формы или ошибка компиляции модуля

Регистрация в БСП
Норма

Файл загружается, команды появляются в интерфейсе у пользователей

Тревожный признак

Ошибка «не найдена функция СведенияОВнешнейОбработке»

Результат выполнения
Норма

Данные изменены ровно в ожидаемых объектах, количество совпадает с расчётным

Тревожный признак

Изменения затронули лишние объекты или выполнились частично

Ограничения механизма и когда обработки недостаточно

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

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

Маршрут решения

Как выбрать действие

Нужно разово изменить или проверить данныеСоздайте внешнюю обработку и запустите её через «Файл — Открыть» на копии базы
Нужна дополнительная печатная форма документаСделайте внешнюю печатную форму и подключите через «Дополнительные отчеты и обработки»
Нужно постоянно менять поведение типовых форм или модулейИспользуйте расширение конфигурации — обработка эту задачу не решит
Нужен запуск по расписаниюПодключите обработку через БСП с настройкой расписания или вызывайте пакетный режим 1С из планировщика ОС
Храните исходники обработок в системе контроля версий или хотя бы в структурированном каталоге с указанием версии в имени файла. Через полгода по одному файлу .epf сложно вспомнить, какая это редакция и для какой базы она писалась, а функция СведенияОВнешнейОбработке с полем «Версия» сильно упрощает идентификацию.
ПЗ
Практическое замечание

Частые вопросы о внешних обработках в 1С

Чем внешняя обработка отличается от внешнего отчёта?

Технически — почти ничем, оба файла содержат код, формы и макеты. Разница в назначении: отчёт (.erf) ориентирован на формирование результата через СКД, обработка (.epf) — на выполнение действий. В БСП для них предусмотрены разные виды регистрации, но механизм подключения общий.

Можно ли открыть внешнюю обработку в базе без конфигуратора?

Да, именно так обработки обычно и используются. В режиме 1С:Предприятие выберите «Файл — Открыть» и укажите файл .epf. У пользователя должно быть право на открытие внешних отчётов и обработок, иначе платформа откажет в доступе.

Почему БСП не загружает мой файл?

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

Безопасно ли запускать обработки, скачанные из интернета?

Только после проверки. Откройте файл в конфигураторе, просмотрите код модулей на предмет подозрительных вызовов (работа с файлами, COM-объекты, HTTP-запросы к неизвестным адресам). Первый запуск делайте на копии базы и по возможности в безопасном режиме. Популярные инструменты вроде консоли запросов лучше брать из первоисточников.

Можно ли отлаживать внешнюю обработку?

Да. Откройте обработку в конфигураторе, запустите отладку предприятия и откройте файл в отлаживаемом сеансе — точки останова в коде обработки сработают так же, как в коде конфигурации. Убедитесь, что в настройках отладки разрешена отладка внешних объектов.

Что делать, если обработка изменила данные с ошибкой?

Если перед запуском была сделана резервная копия — восстановите базу из неё. Без копии вариантов мало: исправлять данные другой обработкой, если изменения обратимы и известно, что именно затронуто. Поэтому изменяющие обработки стоит писать с транзакциями и режимом «только показать, что будет изменено» перед реальным выполнением.

Итог

Что важно запомнить

Внешняя обработка — это файл .epf с кодом и формами, который выполняется без изменения конфигурации. Для разового запуска достаточно «Файл — Открыть», для постоянного использования — подключение через «Дополнительные отчеты и обработки» с функцией СведенияОВнешнейОбработке. Проверяйте чужие файлы в конфигураторе, тестируйте на копии базы и не отключайте безопасный режим без необходимости.