Разработка и Конфигурация · 10 мин
Как написать внешнюю обработку 1С
Пошаговое руководство по созданию внешней обработки 1С: структура модуля, формы, регистрация через БСП, отладка, типичные ошибки и проверка результата.
Внешняя обработка — это файл с расширением .epf, который выполняет прикладную логику в 1С:Предприятии без изменения конфигурации. Такой подход используют для групповых операций над данными, загрузки и выгрузки, печатных форм и регламентных действий, когда дорабатывать саму конфигурацию нельзя или нежелательно: она на поддержке, обновляется поставщиком или находится в режиме «только чтение» для разработчика.
Механизм работает на управляемых и обычных формах, в файловых и клиент-серверных базах. Обработку можно запустить вручную через меню «Файл → Открыть» или подключить к подсистеме «Дополнительные отчеты и обработки» из библиотеки стандартных подсистем (БСП), чтобы она появилась в интерфейсе пользователей и выполнялась по расписанию.
Ниже разобран полный цикл: от создания файла в конфигураторе до регистрации в типовой конфигурации, с примерами кода модуля, проверкой результата и разбором типичных ошибок.
Когда внешняя обработка — правильный выбор
Внешняя обработка оправдана, когда нужно выполнить разовую или периодическую операцию без встраивания в конфигурацию: массово изменить реквизиты документов, загрузить данные из таблицы, проверить корректность заполнения справочников, сформировать нестандартный отчет. Она также подходит для печатных форм и заполнения табличных частей через механизм дополнительных обработок БСП.
Если логика должна работать постоянно, тесно интегрирована с интерфейсом и событиями объектов, правильнее доработать конфигурацию или расширение. Внешняя обработка не имеет доступа к подпискам на события, не участвует в обновлении и не хранит настройки в базе автоматически — это ее ограничения.
Сравнение вариантов
Подходит для разовых операций, загрузок, проверок данных и дополнительных печатных форм. Не требует снятия конфигурации с поддержки. Ограничение: нет подписок на события и автозапуска без БСП.
Подходит, когда нужно изменить формы, добавить подписки на события и свои объекты, сохранив возможность обновления типовой конфигурации. Требует режима совместимости расширений.
Оправдана при глубокой интеграции логики в типовые механизмы. Минусы: усложняет обновление, требует снятия с полной поддержки.
Создание файла обработки в конфигураторе
Откройте конфигуратор нужной базы (достаточно пустой файловой базы той же версии платформы, если конфигурация закрыта). Выберите «Файл → Новый → Внешняя обработка». Появится объект с пустой структурой: у него есть модуль объекта, можно добавить формы, макеты и реквизиты обработки.
Задайте имя и синоним обработки — синоним увидит пользователь при открытии. Если обработка работает интерактивно, добавьте основную форму: правый клик по обработке → «Добавить форму». Для фоновых операций без интерфейса форма не обязательна — вся логика пишется в модуле объекта.
Сохраните файл через «Файл → Сохранить как» с расширением .epf. Открыть его в режиме 1С:Предприятие можно через «Файл → Открыть» — это самый быстрый способ проверить работу на реальных данных.
- 1Откройте конфигуратор базы той же версии платформы, где будет работать обработка
- 2Создайте объект: Файл → Новый → Внешняя обработка
- 3Укажите имя и понятный синоним
- 4Добавьте форму для интерактивной работы или пишите код в модуле объекта
- 5Реализуйте логику, сохраните файл .epf
- 6Откройте обработку в режиме 1С:Предприятие и проверьте на копии базы
Структура кода: модуль объекта и модуль формы
Модуль объекта выполняется на сервере и подходит для работы с данными: запросов, записи объектов, транзакций. Модуль формы содержит обработчики событий элементов интерфейса и клиентские процедуры. Важно разделять контексты: директивы &НаСервере и &НаКлиенте определяют, где исполняется процедура.
Пример простейшей обработки без формы — массовая установка комментария в документах. Код размещается в модуле объекта:
Процедура УстановитьКомментарий(Период, ТекстКомментария) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслуг.Ссылка КАК Ссылка
|ИЗ
| Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
|ГДЕ
| РеализацияТоваровУслуг.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И РеализацияТоваровУслуг.Проведен";
Запрос.УстановитьПараметр("НачалоПериода", Период.ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", Период.ДатаОкончания);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
ДокументОбъект.Комментарий = ТекстКомментария;
ДокументОбъект.Записать();
КонецЦикла;
КонецПроцедуры
Для формы добавьте реквизиты (например, «Период» и «Комментарий») и кнопку «Выполнить», в обработчике которой вызывается серверная процедура. Изменяйте данные только в транзакции, если операция затрагивает много объектов: при ошибке в середине цикла база останется в консистентном состоянии.
Регистрация в типовой конфигурации через БСП
Чтобы обработка появилась в разделе «Дополнительные отчеты и обработки» типовой конфигурации (УТ, ERP, БП и других на базе БСП), в модуле объекта нужно реализовать экспортную функцию СведенияОВнешнейОбработке(). Она возвращает структуру с видом обработки, версией, безопасным режимом и списком команд.
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Установить комментарий в документах'");
Команда.Идентификатор = "УстановитьКомментарий";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
После этого администратор добавляет файл через «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Обратите внимание: включение безопасного режима ограничивает доступ к файловой системе и COM-объектам — если обработка читает файлы с диска, режим придется отключить, что требует повышенного контроля кода.
Отладка и проверка результата
Отладка внешней обработки выполняется стандартно: в конфигураторе включите «Отладка → Подключение» с автоматическим подключением толстого или тонкого клиента, откройте .epf-файл в конфигураторе и расставьте точки останова. Затем запустите обработку в режиме предприятия — исполнение остановится в нужном месте.
Для операций, изменяющих данные, полезно сначала выводить список объектов, которые будут затронуты, без записи — режим «проверки». Добавьте флаг «Только показать» и сравните количество найденных записей с ожиданиями. Это простой способ поймать ошибку в отборе запроса до реального изменения базы.
Как проверить результат
Количество и состав записей в режиме просмотра совпадает с ожиданиями
Выбраны лишние документы или пустой результат — проверьте параметры запроса и границы периода
После выполнения реквизиты изменены, документы открываются без ошибок, проведение не сломалось
Ошибки при открытии или проведении документов, часть объектов не записана
Обработка видна в списке дополнительных, команда запускается у пользователя с нужными правами
Обработка не загружается или команда недоступна — проверьте СведенияОВнешнейОбработке и права
Типичные ошибки и ограничения
Самая частая проблема — обработка, написанная под одну конфигурацию, не запускается в другой из-за отсутствия объектов метаданных: документ называется иначе, реквизит удален. Перед переносом проверьте все обращения к метаданным и по возможности используйте проверку существования объектов через Метаданные.НайтиПоПолномуИмени().
Вторая группа ошибок — работа с формами: обращение к клиентским возможностям (выбор файла, диалоги) из серверного контекста и наоборот. Помните, что в тонком и веб-клиенте недоступна часть функциональности толстого клиента, а модальные окна в современных версиях платформы требуют асинхронных вызовов с описанием оповещения.
FAQ
Можно ли открыть внешнюю обработку без конфигуратора?
Да, в режиме 1С:Предприятие через «Файл → Открыть», если у пользователя есть право интерактивного открытия внешних обработок. Во многих типовых конфигурациях это право по умолчанию отключено у рядовых пользователей — его выдает администратор через профили групп доступа.
Чем внешняя обработка отличается от внешнего отчета?
Технически — расширением файла (.epf против .erf) и назначением. Отчет ориентирован на построение результата через СКД и имеет основную форму отчета, обработка — на выполнение действий. Для дополнительных отчетов в БСП используется именно .erf с вариантами настроек СКД.
Почему обработка работает у разработчика, но не у пользователя?
Чаще всего причина в правах: у пользователя нет доступа к объектам, которые читает или изменяет обработка, либо запрещено интерактивное открытие внешних файлов. Проверьте выполнение под пользователем с реальным профилем прав, а не под полными правами.
Как запустить обработку по расписанию?
Через подсистему «Дополнительные отчеты и обработки» БСП: зарегистрируйте обработку с типом команды «ВызовСерверногоМетода» и настройте расписание в карточке элемента справочника. Команда выполнится регламентным заданием на сервере.
Можно ли хранить настройки обработки между запусками?
Да, через стандартное хранилище: методы ХранилищеОбщихНастроек.Сохранить() и Загрузить() позволяют сохранять значения реквизитов формы для конкретного пользователя. При регистрации в БСП настройки сохраняются в базе вместе с элементом справочника дополнительных обработок.
Что важно запомнить
Внешняя обработка создается в конфигураторе как файл .epf, логика пишется в модуле объекта и формы, для типовых конфигураций добавляется функция СведенияОВнешнейОбработке(). Изменяющие данные операции тестируйте на копии базы, в транзакции и с предварительным просмотром затрагиваемых объектов.