Разработка и Конфигурация · 13 мин
Как делать внешние обработки в 1С: практическое руководство
Как создать внешнюю обработку в 1С: подготовка файла EPF, написание кода, подключение к базе, регистрация в дополнительных отчетах и обработках.
Внешняя обработка в 1С — это файл с расширением .epf, который содержит формы, макеты и программный код, но не входит в состав конфигурации. Такой механизм позволяет добавлять функциональность без изменения типовой конфигурации: массово менять реквизиты, загружать данные из Excel, формировать нестандартные документы, выполнять сервисные операции.
Главное преимущество внешних обработок — конфигурация остаётся на поддержке, обновления проходят штатно, а доработка хранится отдельным файлом. Для типовых конфигураций на управляемых формах (УТ 11, ERP, БП 3.0, ЗУП 3.1) внешние обработки подключаются через механизм «Дополнительные отчеты и обработки» и доступны пользователям прямо из интерфейса.
Ниже разобран полный цикл: от создания пустого файла в конфигураторе до регистрации обработки в базе и проверки результата, с типичными ошибками и ограничениями.
Что такое внешняя обработка и когда она нужна
Внешняя обработка технически представляет собой объект метаданных, вынесенный за пределы конфигурации. Внутри файла могут быть формы, макеты (табличные документы, схемы компоновки данных), модуль объекта и модули форм с кодом на встроенном языке 1С.
Типовые сценарии применения: групповая обработка справочников и документов, загрузка и выгрузка данных, печатные формы, заполнение табличных частей, сервисные утилиты для администраторов. Если задача разовая или нестандартная для конкретной организации — внешняя обработка почти всегда предпочтительнее доработки конфигурации.
Есть и ограничения: внешняя обработка не может добавлять новые объекты метаданных (справочники, документы, регистры), не может менять роли и права, а её код выполняется с правами текущего пользователя. Для сложной интеграционной логики иногда правильнее использовать расширение конфигурации (.cfe).
Сравнение вариантов
Подходит для сервисных операций, загрузок, массовых изменений. Не меняет конфигурацию, легко переносится между базами. Ограничение: нельзя добавлять объекты метаданных.
Подходит, когда нужно изменить формы, модули, роли типовой конфигурации, не снимая её с поддержки. Требует аккуратности при обновлениях.
Крайний вариант для глубоких изменений логики. Усложняет обновления, требует снятия объектов с поддержки.
Создание файла обработки в конфигураторе
Откройте конфигуратор нужной базы. Авторизация не обязательна, если планируется только создать файл, но для отладки и проверки кода лучше войти под пользователем с полными правами. Дальнейший порядок действий:
- 1В меню выберите «Файл → Новый» (Ctrl+N).
- 2В списке типов объектов выберите «Внешняя обработка» и нажмите «Готово».
- 3Задайте имя обработки (латиницей, без пробелов) — оно станет именем объекта в коде.
- 4Создайте основную форму: в дереве обработки правый клик по «Формы» → «Добавить» → выберите «Форма обработки».
- 5Сохраните файл: «Файл → Сохранить как», укажите осмысленное имя, например ЗагрузкаНоменклатуры.epf.
После создания формы откроется редактор формы и модуль формы. Именно здесь размещается основная логика: команды формы, обработчики событий, процедуры чтения и записи данных. Для обработки без интерфейса (например, выполняемой по расписанию) форму можно не создавать — весь код размещается в модуле объекта.
На форму добавляют реквизиты (параметры, которые вводит пользователь), команды и элементы управления. Для управляемых форм используется директива компиляции: процедуры с &НаКлиенте выполняются на клиенте, с &НаСервере — на сервере. Работа с данными базы (запросы, запись объектов) возможна только на сервере.
Написание кода: базовый пример
Рассмотрим минимальный рабочий пример: обработка, которая по выбранному контрагенту выводит список его договоров. На форме создаётся реквизит «Контрагент» (тип — ссылка на справочник контрагентов) и команда «Выполнить».
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
Если Не ЗначениеЗаполнено(Контрагент) Тогда
Сообщить("Не выбран контрагент");
Возврат;
КонецЕсли;
ВыполнитьОбработкуНаСервере();
КонецПроцедуры
&НаСервере
Процедура ВыполнитьОбработкуНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Договоры.Ссылка КАК Договор
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК Договоры
|ГДЕ
| Договоры.Владелец = &Контрагент";
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Результат = Запрос.Выполнить().Выгрузить();
// Дальше — вывод результата в таблицу на форме или в табличный документ
КонецПроцедурыКлючевые принципы при написании кода обработки: вся работа с данными идёт на сервере, клиентская часть отвечает только за интерфейс и проверку ввода. Перед выполнением операций записи стоит проверять заполненность параметров и выдавать понятные сообщения — это избавит пользователя от ошибок платформы.
Если обработка изменяет данные (проводит документы, меняет реквизиты), обязательно добавьте режим «тестового прогона»: флажок, при котором обработка только показывает, что будет изменено, без фактической записи. Это стандарт безопасной практики.
Открытие обработки без регистрации
Самый быстрый способ запуска — открыть файл напрямую. В режиме предприятия выберите «Файл → Открыть» (Ctrl+O) и укажите файл .epf. Обработка запустится в текущей базе и получит доступ ко всем её данным в рамках прав пользователя.
Этот способ подходит для разработчика и администратора: не требует настройки, файл можно хранить где угодно. Для рядовых пользователей он неудобен — им придётся каждый раз искать файл, а в некоторых конфигурациях открытие внешних файлов ограничено настройками безопасности.
Обратите внимание: в типовых конфигурациях может действовать профиль безопасности, запрещающий открытие внешних файлов. В этом случае обработку нужно регистрировать штатным механизмом, описанным ниже.
Регистрация в «Дополнительных отчетах и обработках»
В конфигурациях на БСП (Библиотека стандартных подсистем) — УТ 11, ERP, КА, БП 3.0, ЗУП 3.1 — внешние обработки регистрируются через раздел «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Предварительно включите сам механизм флажком в том же разделе.
Чтобы обработка принималась механизмом, в её модуле объекта должна быть функция СведенияОВнешнейОбработке(), возвращающая структуру с описанием: версия БСП, вид обработки, наименование, версия, безопасный режим и таблица команд.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка");
ПараметрыРегистрации.Вставить("Наименование", "Загрузка номенклатуры из Excel");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Истина);
ПараметрыРегистрации.Вставить("Информация", "Загрузка номенклатуры из табличного документа");
Команды = Новый ТаблицаЗначений;
Команды.Колонки.Добавить("Представление");
Команды.Колонки.Добавить("Идентификатор");
Команды.Колонки.Добавить("Использование");
Команды.Колонки.Добавить("ПоказыватьОповещение");
Команда = Команды.Добавить();
Команда.Представление = "Открыть обработку загрузки";
Команда.Идентификатор = "ОткрытьЗагрузку";
Команда.Использование = "ОткрытиеФормы";
Команда.ПоказыватьОповещение = Ложь;
ПараметрыРегистрации.Вставить("Команды", Команды);
Возврат ПараметрыРегистрации;
КонецФункцииПараметр «Использование» определяет поведение команды: ОткрытиеФормы — открывает основную форму обработки, ВызовКлиентскогоМетода или ВызовСерверногоМетода — выполняет код без открытия формы (тогда в модуле нужна экспортная процедура ВыполнитьКоманду). После добавления файла в справочник обработка появляется в разделе «Дополнительные обработки» соответствующего подраздела и доступна пользователям по правам.
Другие виды регистрации
Помимо вида «ДополнительнаяОбработка», механизм поддерживает специализированные виды: «ЗаполнениеОбъекта» (кнопка «Заполнить» в документах и справочниках), «СозданиеСвязанныхОбъектов» (ввод на основании), «ПечатнаяФорма» (внешние печатные формы), «ДополнительныйОтчет». Для каждого вида предусмотрен свой состав команд и параметр «Назначение» — список объектов конфигурации, к которым привязывается обработка.
Отладка и проверка результата
Отладка внешней обработки выполняется стандартно: откройте файл в конфигураторе, поставьте точку останова, запустите отладку (F5) и откройте обработку в сеансе предприятия. Если обработка зарегистрирована в справочнике дополнительных обработок, отлаживать её сложнее — платформа загружает копию из базы. Проще отлаживать файл напрямую, а регистрировать уже готовую версию.
Как проверить результат
Форма открывается, команды выполняются без ошибок
Ошибка компиляции или «Объект не найден» — проверьте имена объектов в запросах
Обработка появилась в списке, команда видна пользователям
Отказ при добавлении — ошибка в СведенияОВнешнейОбработке
Обработка работает в рамках его прав, недоступные данные не выводятся
Ошибка «Нарушение прав доступа» — логика требует прав, которых у пользователя нет
Изменены только целевые объекты, есть протокол выполненных действий
Изменения затронули лишние объекты — отбор в запросе недостаточно точный
Обязательно проверяйте обработку под учётной записью реального пользователя, а не только под администратором. Код выполняется с правами текущего сеанса: если пользователю недоступен справочник, к которому обращается обработка, он получит ошибку в самый неподходящий момент.
Храните исходные файлы обработок в системе контроля версий или хотя бы в структурированном каталоге с номерами версий в имени файла. Когда обработок становится больше десятка, найти «ту самую рабочую версию» без этого почти невозможно.
Типичные ошибки и ограничения
Помните и об ограничениях формата: внешняя обработка не может добавлять метаданные, изменять роли, расширять формы типовых объектов. Если задача требует этого — переходите на расширение конфигурации. Также внешние обработки не выполняются по расписанию сами по себе: для фонового выполнения нужна регистрация с соответствующей командой и настройка расписания в дополнительных обработках, либо вызов через планировщик заданий с запуском 1С в пакетном режиме.
Как выбрать действие
Частые вопросы
Чем внешняя обработка отличается от внешнего отчёта?
Технически отличие в типе файла: отчёт (.erf) строится на схеме компоновки данных и предназначен для вывода информации, обработка (.epf) — для действий над данными и произвольных форм. На практике граница условна: в обработке тоже можно вывести табличный документ. При регистрации в БСП для них используются разные значения вида в СведенияОВнешнейОбработке.
Почему конфигурация отказывается принимать файл при регистрации?
Чаще всего причина — ошибка в функции СведенияОВнешнейОбработке: неверная структура возвращаемых данных, обращение к данным базы, отсутствие обязательных ключей. Проверьте функцию в отладчике, открыв обработку через конфигуратор и вызвав функцию вручную.
Сохранится ли обработка при обновлении конфигурации?
Зарегистрированные в справочнике «Дополнительные отчеты и обработки» обработки хранятся в базе данных и при обновлении конфигурации не удаляются. Однако сама обработка может перестать работать, если в новой версии переименованы объекты, к которым она обращается, — после обновления стоит проверить её работоспособность.
Можно ли запускать внешнюю обработку по расписанию?
Да, двумя способами. В конфигурациях на БСП для команды с использованием «ВызовСерверногоМетода» можно настроить расписание в карточке дополнительной обработки. Альтернатива — запуск из планировщика Windows: старт 1С в пакетном режиме с параметром Execute, указывающим на файл обработки.
Безопасно ли запускать обработки из интернета?
Нет, непроверенные обработки — реальный риск: код выполняется с правами пользователя и имеет полный доступ к данным базы. Перед использованием откройте файл в конфигураторе и просмотрите код, особенно места с записью данных, отправкой HTTP-запросов и обращениями к файловой системе. Запускайте сначала в копии базы.
Можно ли создать внешнюю обработку без конфигуратора?
Нет, файл .epf создаётся и редактируется только конфигуратором. Существуют инструменты выгрузки обработок в текстовые файлы (например, для хранения в Git) и обратной сборки, но исходную сборку всё равно выполняет конфигуратор или поставляемые с платформой утилиты.
Что важно запомнить
Внешняя обработка создаётся в конфигураторе как файл .epf, открывается напрямую или регистрируется в «Дополнительных отчетах и обработках» через функцию СведенияОВнешнейОбработке. Работа с данными — только на сервере, изменения данных — только после теста в копии базы и под учётной записью реального пользователя.