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

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

Как делать внешние обработки в 1С: практическое руководство

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

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

Главное преимущество внешних обработок — конфигурация остаётся на поддержке, обновления проходят штатно, а доработка хранится отдельным файлом. Для типовых конфигураций на управляемых формах (УТ 11, ERP, БП 3.0, ЗУП 3.1) внешние обработки подключаются через механизм «Дополнительные отчеты и обработки» и доступны пользователям прямо из интерфейса.

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

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

Внешняя обработка технически представляет собой объект метаданных, вынесенный за пределы конфигурации. Внутри файла могут быть формы, макеты (табличные документы, схемы компоновки данных), модуль объекта и модули форм с кодом на встроенном языке 1С.

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

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

Сравнение вариантов

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

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

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

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

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

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

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

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

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

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

На форму добавляют реквизиты (параметры, которые вводит пользователь), команды и элементы управления. Для управляемых форм используется директива компиляции: процедуры с &НаКлиенте выполняются на клиенте, с &НаСервере — на сервере. Работа с данными базы (запросы, запись объектов) возможна только на сервере.

Написание кода: базовый пример

Рассмотрим минимальный рабочий пример: обработка, которая по выбранному контрагенту выводит список его договоров. На форме создаётся реквизит «Контрагент» (тип — ссылка на справочник контрагентов) и команда «Выполнить».

bsl
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
    Если Не ЗначениеЗаполнено(Контрагент) Тогда
        Сообщить("Не выбран контрагент");
        Возврат;
    КонецЕсли;
    ВыполнитьОбработкуНаСервере();
КонецПроцедуры

&НаСервере
Процедура ВыполнитьОбработкуНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    | Договоры.Ссылка КАК Договор
    |ИЗ
    | Справочник.ДоговорыКонтрагентов КАК Договоры
    |ГДЕ
    | Договоры.Владелец = &Контрагент";
    Запрос.УстановитьПараметр("Контрагент", Контрагент);
    Результат = Запрос.Выполнить().Выгрузить();
    // Дальше — вывод результата в таблицу на форме или в табличный документ
КонецПроцедуры

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

Если обработка изменяет данные (проводит документы, меняет реквизиты), обязательно добавьте режим «тестового прогона»: флажок, при котором обработка только показывает, что будет изменено, без фактической записи. Это стандарт безопасной практики.

Открытие обработки без регистрации

Самый быстрый способ запуска — открыть файл напрямую. В режиме предприятия выберите «Файл → Открыть» (Ctrl+O) и укажите файл .epf. Обработка запустится в текущей базе и получит доступ ко всем её данным в рамках прав пользователя.

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

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

Регистрация в «Дополнительных отчетах и обработках»

В конфигурациях на БСП (Библиотека стандартных подсистем) — УТ 11, ERP, КА, БП 3.0, ЗУП 3.1 — внешние обработки регистрируются через раздел «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Предварительно включите сам механизм флажком в том же разделе.

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

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

    Команды = Новый ТаблицаЗначений;
    Команды.Колонки.Добавить("Представление");
    Команды.Колонки.Добавить("Идентификатор");
    Команды.Колонки.Добавить("Использование");
    Команды.Колонки.Добавить("ПоказыватьОповещение");

    Команда = Команды.Добавить();
    Команда.Представление = "Открыть обработку загрузки";
    Команда.Идентификатор = "ОткрытьЗагрузку";
    Команда.Использование = "ОткрытиеФормы";
    Команда.ПоказыватьОповещение = Ложь;

    ПараметрыРегистрации.Вставить("Команды", Команды);
    Возврат ПараметрыРегистрации;
КонецФункции

Параметр «Использование» определяет поведение команды: ОткрытиеФормы — открывает основную форму обработки, ВызовКлиентскогоМетода или ВызовСерверногоМетода — выполняет код без открытия формы (тогда в модуле нужна экспортная процедура ВыполнитьКоманду). После добавления файла в справочник обработка появляется в разделе «Дополнительные обработки» соответствующего подраздела и доступна пользователям по правам.

Другие виды регистрации

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

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

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

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

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

Открытие файла через «Файл → Открыть»
Норма

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

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

Ошибка компиляции или «Объект не найден» — проверьте имена объектов в запросах

Регистрация в дополнительных обработках
Норма

Обработка появилась в списке, команда видна пользователям

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

Отказ при добавлении — ошибка в СведенияОВнешнейОбработке

Выполнение под обычным пользователем
Норма

Обработка работает в рамках его прав, недоступные данные не выводятся

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

Ошибка «Нарушение прав доступа» — логика требует прав, которых у пользователя нет

Изменение данных
Норма

Изменены только целевые объекты, есть протокол выполненных действий

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

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

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

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

Типичные ошибки и ограничения

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

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

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

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

Нужна разовая операция для администратораСоздайте обработку и открывайте её через «Файл → Открыть», регистрация не нужна
Обработкой будут пользоваться сотрудники регулярноРеализуйте СведенияОВнешнейОбработке и зарегистрируйте в дополнительных обработках
Нужна кнопка в документе или печатная формаИспользуйте виды «ЗаполнениеОбъекта» или «ПечатнаяФорма» с указанием назначения
Требуется менять формы или модули типовых объектовВнешняя обработка не подойдёт — используйте расширение конфигурации

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

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

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

Почему конфигурация отказывается принимать файл при регистрации?

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

Сохранится ли обработка при обновлении конфигурации?

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

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

Да, двумя способами. В конфигурациях на БСП для команды с использованием «ВызовСерверногоМетода» можно настроить расписание в карточке дополнительной обработки. Альтернатива — запуск из планировщика Windows: старт 1С в пакетном режиме с параметром Execute, указывающим на файл обработки.

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

Нет, непроверенные обработки — реальный риск: код выполняется с правами пользователя и имеет полный доступ к данным базы. Перед использованием откройте файл в конфигураторе и просмотрите код, особенно места с записью данных, отправкой HTTP-запросов и обращениями к файловой системе. Запускайте сначала в копии базы.

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

Нет, файл .epf создаётся и редактируется только конфигуратором. Существуют инструменты выгрузки обработок в текстовые файлы (например, для хранения в Git) и обратной сборки, но исходную сборку всё равно выполняет конфигуратор или поставляемые с платформой утилиты.

Итог

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

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