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

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

Как написать внешнюю обработку 1С

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

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

Механизм работает на управляемых и обычных формах, в файловых и клиент-серверных базах. Обработку можно запустить вручную через меню «Файл → Открыть» или подключить к подсистеме «Дополнительные отчеты и обработки» из библиотеки стандартных подсистем (БСП), чтобы она появилась в интерфейсе пользователей и выполнялась по расписанию.

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

Когда внешняя обработка — правильный выбор

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

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

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

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

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

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

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

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

Оправдана при глубокой интеграции логики в типовые механизмы. Минусы: усложняет обновление, требует снятия с полной поддержки.

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

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

Задайте имя и синоним обработки — синоним увидит пользователь при открытии. Если обработка работает интерактивно, добавьте основную форму: правый клик по обработке → «Добавить форму». Для фоновых операций без интерфейса форма не обязательна — вся логика пишется в модуле объекта.

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

Порядок создания обработки
  1. 1
    Откройте конфигуратор базы той же версии платформы, где будет работать обработка
  2. 2
    Создайте объект: Файл → Новый → Внешняя обработка
  3. 3
    Укажите имя и понятный синоним
  4. 4
    Добавьте форму для интерактивной работы или пишите код в модуле объекта
  5. 5
    Реализуйте логику, сохраните файл .epf
  6. 6
    Откройте обработку в режиме 1С:Предприятие и проверьте на копии базы

Структура кода: модуль объекта и модуль формы

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

Пример простейшей обработки без формы — массовая установка комментария в документах. Код размещается в модуле объекта:

Процедура УстановитьКомментарий(Период, ТекстКомментария) Экспорт

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| РеализацияТоваровУслуг.Ссылка КАК Ссылка

|ИЗ

| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг

|ГДЕ

| РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода

| И РеализацияТоваровУслуг.Проведен";

Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);

Запрос.УстановитьПараметр("КонецПериода", Период.ДатаОкончания);

Выборка = Запрос.Выполнить().Выбрать();

Пока Выборка.Следующий() Цикл

ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();

ДокументОбъект.Комментарий = ТекстКомментария;

ДокументОбъект.Записать();

КонецЦикла;

КонецПроцедуры

Для формы добавьте реквизиты (например, «Период» и «Комментарий») и кнопку «Выполнить», в обработчике которой вызывается серверная процедура. Изменяйте данные только в транзакции, если операция затрагивает много объектов: при ошибке в середине цикла база останется в консистентном состоянии.

Регистрация в типовой конфигурации через БСП

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

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();

ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();

ПараметрыРегистрации.Версия = "1.0";

ПараметрыРегистрации.БезопасныйРежим = Истина;

Команда = ПараметрыРегистрации.Команды.Добавить();

Команда.Представление = НСтр("ru = 'Установить комментарий в документах'");

Команда.Идентификатор = "УстановитьКомментарий";

Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();

Команда.ПоказыватьОповещение = Истина;

Возврат ПараметрыРегистрации;

КонецФункции

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

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

Отладка внешней обработки выполняется стандартно: в конфигураторе включите «Отладка → Подключение» с автоматическим подключением толстого или тонкого клиента, откройте .epf-файл в конфигураторе и расставьте точки останова. Затем запустите обработку в режиме предприятия — исполнение остановится в нужном месте.

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

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

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

Отбор данных запросом
Норма

Количество и состав записей в режиме просмотра совпадает с ожиданиями

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

Выбраны лишние документы или пустой результат — проверьте параметры запроса и границы периода

Запись объектов
Норма

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

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

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

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

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

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

Обработка не загружается или команда недоступна — проверьте СведенияОВнешнейОбработке и права

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

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

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

Типичные ошибки
01
Запись объектов в цикле без транзакции — при сбое часть данных изменена, часть нет, и состояние базы становится непредсказуемым
02
Запрос без ограничения периода — обработка сканирует всю таблицу и надолго блокирует базу
03
Жесткая привязка к именам объектов без проверки — обработка падает при переносе в другую конфигурацию
04
Использование ПолучитьОбъект() там, где достаточно запроса — лишнее чтение всех полей и медленная работа на больших объемах
05
Отключение безопасного режима при регистрации без реальной необходимости — риск выполнения непроверенного кода с полными правами

FAQ

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

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

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

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

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

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

Как запустить обработку по расписанию?

Через подсистему «Дополнительные отчеты и обработки» БСП: зарегистрируйте обработку с типом команды «ВызовСерверногоМетода» и настройте расписание в карточке элемента справочника. Команда выполнится регламентным заданием на сервере.

Можно ли хранить настройки обработки между запусками?

Да, через стандартное хранилище: методы ХранилищеОбщихНастроек.Сохранить() и Загрузить() позволяют сохранять значения реквизитов формы для конкретного пользователя. При регистрации в БСП настройки сохраняются в базе вместе с элементом справочника дополнительных обработок.

Итог

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

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