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

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

Как создать внешнюю обработку в 1С: пошаговое руководство

Как создать внешнюю обработку в 1С: пошаговая инструкция в конфигураторе, форма, команды, подключение через дополнительные отчеты и обработки, проверка результата.

Внешняя обработка — это файл с расширением .epf, который выполняет произвольный код в базе 1С без изменения конфигурации. Такой инструмент подходит для массовых операций над данными, загрузки и выгрузки, тестирования алгоритмов и разовых сервисных задач. Главное преимущество — конфигурация остаётся на поддержке, а обработку можно распространять между базами простым копированием файла.

Создать обработку можно двумя путями: через конфигуратор (полноценная разработка с формами и модулями) или через встроенную консоль кода (быстрые разовые действия). Для задач, которые будут использоваться регулярно, правильный выбор — внешняя обработка в конфигураторе с формой, кнопками и проверками ввода.

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

Что такое внешняя обработка и когда она нужна

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

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

Создание файла обработки в конфигураторе

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

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

После создания формы откроется редактор с тремя областями: дерево элементов формы, список реквизитов и команд, модуль формы. Реквизиты формы — это поля ввода (например, путь к файлу, период, ссылка на документ). Команды — это кнопки, которые запускают процедуры.

Построение формы: реквизиты, команды, кнопки

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

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

Написание кода: клиентские и серверные процедуры

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

bsl
&НаКлиенте
Процедура Загрузить(Команда)
	ЗагрузитьНаСервере(ПутьКФайлу);
	ПоказатьПредупреждение(, "Загрузка завершена");
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ЗагрузитьНаСервере(Путь)
	// Запросы и запись данных — только здесь
КонецПроцедуры

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

Проверка и запуск обработки

Быстрая проверка без публикации: откройте базу в режиме предприятия, выполните Файл → Открыть и выберите сохранённый .epf. Обработка запустится с правами текущего пользователя. Проверьте сценарий на копии базы или на тестовых данных: убедитесь, что создаются именно те объекты, что задумано, и не появляются дубли при повторном запуске.

Контрольные точки

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

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

Форма открывается без ошибок, поля доступны

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

Ошибка компиляции или «объект не найден» при открытии

Выполнение команды
Норма

Данные созданы/изменены, повторный запуск не плодит дубли

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

Дубли записей, частичная запись без сообщения об ошибке

Права пользователя
Норма

Обработка работает под учётной записью целевого пользователя

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

Нарушение прав доступа к объектам у рядовых пользователей

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

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

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

Типичные ошибки
01
Обращение к реквизитам формы из серверной процедуры без контекста — ошибка компиляции; передавайте значения параметрами.
02
Запись объектов в цикле без транзакции и без обработки исключений — при сбое остаются частично записанные данные.
03
Разработка в конфигураторе одной базы, а запуск в другой с отличающимися метаданными — ошибки «объект не обнаружен».
04
Отсутствие проверки заполненности полей формы — обработка падает или создаёт пустые объекты.
05
Хранение паролей и путей прямо в коде — при передаче файла данные утекают вместе с ним.

Альтернативы и ограничения

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

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

Регулярные сервисные задачи без изменения конфигурации. Ограничение: нельзя добавлять новые объекты метаданных.

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

Задача — только вывод данных в табличный документ или СКД, без изменения базы.

Расширение конфигурации

Нужно доработать типовые формы, роли или добавить объекты, сохранив поддержку. Требует аккуратного обновления.

Консоль кода / консоль запросов

Разовая операция или отладка алгоритма. Не подходит для передачи рядовым пользователям.

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

Итог

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

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

Частые вопросы

Можно ли создать обработку без конфигуратора?

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

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

Отчет (.erf) ориентирован на вывод данных: в нём основную роль играет схема компоновки и табличный документ. Обработка (.epf) — универсальный инструмент для действий: записи, загрузки, сервисных операций. Технически оба создаются одинаково, различается назначение.

Почему обработка не открывается у пользователя, хотя у администратора работает?

На открытие внешних файлов действует право «Интерактивное открытие внешних отчетов и обработок» и защита от опасных действий. Либо выдайте право, либо зарегистрируйте обработку через «Дополнительные отчеты и обработки» — тогда она запускается штатно.

Как отладить код обработки?

Откройте обработку в конфигураторе, запустите отладку режима предприятия (Отладка → Начать отладку), откройте .epf в предприятии и поставьте точки останова в модуле. Конфигуратор остановит выполнение на нужной строке.

Можно ли использовать обработку, написанную для другой конфигурации?

Только если обработка обращается к объектам, существующим в вашей базе с теми же именами. Универсальные обработки (поиск дублей, консоль запросов) работают везде; обработки под конкретную конфигурацию требуют адаптации кода.

Как защитить код обработки от просмотра?

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