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

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

Как обратиться к внешней обработке 1С

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

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

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

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

Разовый запуск: открыть файл обработки вручную

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

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

Для файловых баз в режиме отладки удобно открывать обработку прямо из конфигуратора: «Отладка → Начать отладку» с предметом отладки «Внешняя обработка». Это позволяет ставить точки останова и смотреть значения переменных внутри .epf.

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

Если конфигурация построена на Библиотеке стандартных подсистем (БСП) — это «Управление торговлей», «ERP», «Бухгалтерия предприятия» и большинство типовых решений — правильный способ постоянного подключения обработки: раздел «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Флаг использования механизма включается там же, если он ещё не установлен.

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

После записи элемента справочника обработка становится доступна пользователям через пункт «Дополнительные обработки» в соответствующих разделах. Доступ регулируется правами на элемент справочника и быстрым доступом в карточке — это позволяет выдать обработку бухгалтеру, не давая ей прав администратора.

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

Программное обращение к обработке из кода

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

ОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки

.НайтиПоНаименованию("Загрузка прайсов");

ИмяОбработки = ДополнительныеОтчетыИОбработки

.ПодключитьВнешнююОбработку(ОбработкаСсылка);

ОбъектОбработки = ВнешниеОбработки.Создать(ИмяОбработки, Ложь);

Результат = ОбъектОбработки.ЗагрузитьДанные(ПараметрыЗагрузки);

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

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

ОбъектОбработки = ВнешниеОбработки.Создать(

"D:\1C\Обработки\ЗагрузкаПрайсов.epf", Ложь);

ОбъектОбработки.ВыполнитьЗагрузку();

bsl
ОбъектОбработки = ВнешниеОбработки.Создать("D:\1C\Обработки\ЗагрузкаПрайсов.epf", Ложь);
ОбъектОбработки.ВыполнитьЗагрузку();

Вызов команды обработки без создания объекта

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

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

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

Как проверить, что обращение к обработке сработало

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

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

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

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

Подключение обработки
Норма

Метод Создать() вернул объект без исключения

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

Ошибка «Ошибка при создании внешней обработки» или «файл не обнаружен»

Вызов метода
Норма

Экспортная процедура выполнилась и вернула результат

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

«Метод объекта не обнаружен» — нет Экспорт или неверное имя

Доступ пользователя
Норма

Обработка видна в интерфейсе и запускается под обычной учетной записью

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

Обработки нет в списке — не настроен быстрый доступ или права

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

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

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

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

Что выбрать в вашей ситуации

Итоговый выбор способа обращения определяется частотой использования и окружением. Разовые сервисные задачи администратора — ручное открытие файла. Регулярная работа пользователей в типовой конфигурации — регистрация в справочнике дополнительных обработок с настройкой прав. Интеграционные сценарии и регламентные задания — программный вызов через БСП с логированием ошибок и фоновым выполнением длительных операций.

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

Как выбрать способ обращения

Нужно один раз выполнить сервисную операцию под своими правамиОткройте .epf через «Файл → Открыть»
Обработкой регулярно пользуются сотрудники в типовой конфигурацииЗарегистрируйте её в справочнике «Дополнительные отчеты и обработки» и настройте доступ
Обработку должен вызывать другой код или регламентное заданиеИспользуйте ПодключитьВнешнююОбработку() + ВнешниеОбработки.Создать() с логированием ошибок
База работает в облаке или веб-клиенте с безопасным режимомТолько регистрация через БСП; файловые операции переносите в расширение конфигурации
Итог

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

Разовый запуск — через «Файл → Открыть», постоянная работа — через справочник дополнительных обработок, вызов из кода — через ПодключитьВнешнююОбработку() и ВнешниеОбработки.Создать(). Всегда проверяйте наличие «Экспорт» у вызываемых методов, учитывайте безопасный режим и логируйте ошибки.

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

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

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

Почему БСП не принимает мой .epf-файл при регистрации?

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

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

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

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

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

Безопасно ли отключать безопасный режим при вызове обработки?

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