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

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

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

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

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

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

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

Что такое внешняя обработка и когда её выбирать

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

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

Чем закрыть задачу

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

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

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

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

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

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

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

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

Порядок создания файла:

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

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

Форма, реквизиты и модуль: минимальный каркас

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

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

&НаКлиенте

Процедура ВыполнитьОбработку(Команда)

ВыполнитьОбработкуНаСервере();

ПоказатьПредупреждение(, "Обработка завершена");

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

&НаСервере

Процедура ВыполнитьОбработкуНаСервере()

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

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

"ВЫБРАТЬ

| Номенклатура.Ссылка КАК Ссылка

|ИЗ

| Справочник.Номенклатура КАК Номенклатура

|ГДЕ

| НЕ Номенклатура.ПометкаУдаления";

Результат = Запрос.Выполнить().Выгрузить();

// дальнейшая обработка результата

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

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

Отладка и проверка перед подключением

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

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

Проверяйте обработку на копии базы или на тестовых данных. Если код изменяет объекты (проводит документы, меняет реквизиты), сначала ограничьте выборку одним-двумя элементами и убедитесь, что результат именно такой, как ожидалось.

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

Открытие через Файл → Открыть подходит для разработчика, но не для пользователей. Штатный способ доставить обработку в интерфейс — механизм библиотеки стандартных подсистем «Дополнительные отчеты и обработки», который есть в большинстве типовых конфигураций (1С:Бухгалтерия, Управление торговлей, ERP и другие).

Порядок подключения:

  1. В режиме 1С:Предприятие откройте Администрирование → Печатные формы, отчеты и обработки.
  2. Включите флажок «Дополнительные отчеты и обработки».
  3. Перейдите по появившейся ссылке «Дополнительные отчеты и обработки».
  4. Нажмите «Добавить из файла» и выберите ваш .epf-файл.
  5. Проверьте размещение: в каких разделах или карточках объектов появится команда.
  6. Нажмите «Записать и закрыть» и проверьте команду в интерфейсе.

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

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

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

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

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

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

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

НоваяКоманда.Представление = НСтр("ru = 'Загрузка цен из файла'");

НоваяКоманда.Идентификатор = "ЗагрузкаЦен";

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

НоваяКоманда.ПоказыватьОповещение = Ложь;

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

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

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

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

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

Обработка в списке дополнительных
Норма

Запись есть, версия и вид соответствуют заданным в СведенияОВнешнейОбработке

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

Файл не загружается или ругается на функцию регистрации

Команда в интерфейсе
Норма

Кнопка видна в указанном разделе или карточке объекта

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

Команды нет — проверьте размещение и права пользователя

Результат выполнения
Норма

Данные изменились/отчёт сформирован, ошибок в журнале регистрации нет

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

Ошибки выполнения или пустой результат

Безопасный режим, права и ограничения

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

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

Права внутри базы тоже сохраняются: если у пользователя нет права изменять справочник, обработка от его имени тоже не сможет его изменить. Учитывайте это при передаче обработки пользователям и проверяйте её под учётной записью с реальными, а не административными правами.

Типичные ошибки
01
Нет функции СведенияОВнешнейОбработке — типовая подсистема отказывается загружать файл
02
Код работы с базой помещён в клиентскую процедуру — ошибка «Метод объекта не обнаружен»
03
Обращение к объектам, которых нет в конфигурации базы — обработка падает при открытии в другой базе
04
Тестирование только под полными правами — у рядовых пользователей обработка не работает
05
Изменение данных без транзакции — при сбое в середине часть объектов изменена, часть нет

Типовые сценарии использования

Массовое изменение данных

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

Дополнительная печатная форма

Обработка с видом «ПечатнаяФорма» добавляет свой вариант в меню «Печать» выбранных документов. Макет табличного документа хранится прямо внутри EPF-файла, а процедура Печать в модуле объекта формирует результат по переданным ссылкам. Это самый частый способ добавить нестандартный акт или счёт, не трогая конфигурацию.

Загрузка из файлов

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

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

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

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

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

Обработка не загружается в «Дополнительные отчеты и обработки» — что проверить?

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

Можно ли открыть EPF-файл в базе с другой конфигурацией?

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

Как обновить уже подключенную обработку?

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

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

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

Можно ли выполнять обработку по расписанию?

Да, если зарегистрировать её с видом, поддерживающим регламентное задание, и настроить расписание в карточке дополнительной обработки. Команда в этом случае должна быть серверной и не требовать интерактивных действий — диалоги и открытие форм в фоновом задании невозможны.

Итог

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

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