Разработка и Конфигурация · 11 мин
Как обратиться к внешней обработке 1С
Как открыть и программно обратиться к внешней обработке 1С: подключение в справочник дополнительных отчетов, вызов из кода, типичные ошибки и проверка результата.
Внешняя обработка — это файл с расширением .epf, который выполняет прикладную логику без изменения конфигурации базы. Обратиться к ней можно двумя принципиально разными способами: интерактивно, открыв файл через меню «Файл → Открыть», и программно — через справочник дополнительных отчетов и обработок либо напрямую из кода на встроенном языке. Выбор способа зависит от того, разовая это задача или обработка должна работать регулярно и быть доступна пользователям без прав разработчика.
Разовый запуск подходит для сервисных операций: свертки данных, тестового переноса, разовой загрузки. Регулярная работа требует регистрации обработки в механизме дополнительных отчетов и обработок (БСП) — тогда она появляется в интерфейсе пользователей, получает настройки прав, расписание и журнал выполнения. Программный вызов из другого кода нужен, когда обработка выступает как библиотека функций или этап автоматизированного сценария.
Ниже разобраны все три сценария с конкретным кодом, условиями применимости, проверкой результата и типичными ошибками, из-за которых обработка «не открывается» или «не видна» пользователям.
Разовый запуск: открыть файл обработки вручную
Самый простой способ обратиться к внешней обработке — открыть её как обычный файл. В толстом или тонком клиенте выберите «Файл → Открыть» (Ctrl+O) и укажите путь к .epf-файлу. Обработка запустится в текущем сеансе с правами текущего пользователя. Этот способ не требует никакой настройки и работает в любой конфигурации, включая самописные.
В веб-клиенте прямое открытие файла с диска ограничено: браузер не имеет доступа к локальной файловой системе сервера приложений. В этом случае обработку нужно либо зарегистрировать в механизме дополнительных отчетов, либо запускать через тонкий клиент. Учитывайте это при выборе способа для пользователей, работающих только через браузер.
Для файловых баз в режиме отладки удобно открывать обработку прямо из конфигуратора: «Отладка → Начать отладку» с предметом отладки «Внешняя обработка». Это позволяет ставить точки останова и смотреть значения переменных внутри .epf.
Регистрация в справочнике дополнительных отчетов и обработок
Если конфигурация построена на Библиотеке стандартных подсистем (БСП) — это «Управление торговлей», «ERP», «Бухгалтерия предприятия» и большинство типовых решений — правильный способ постоянного подключения обработки: раздел «Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки». Флаг использования механизма включается там же, если он ещё не установлен.
Нажмите «Создать» или «Добавить из файла», укажите .epf-файл. Система прочитает из модуля обработки функцию СведенияОВнешнейОбработке(), которая описывает вид обработки, версию, безопасный режим и список команд. Если эта функция в обработке отсутствует, БСП не сможет её зарегистрировать — файл придётся доработать.
После записи элемента справочника обработка становится доступна пользователям через пункт «Дополнительные обработки» в соответствующих разделах. Доступ регулируется правами на элемент справочника и быстрым доступом в карточке — это позволяет выдать обработку бухгалтеру, не давая ей прав администратора.
- 1Откройте «Администрирование → Печатные формы, отчеты и обработки» и включите флаг «Дополнительные отчеты и обработки».
- 2Перейдите в справочник «Дополнительные отчеты и обработки» и нажмите «Добавить из файла».
- 3Выберите .epf-файл, проверьте заполненные сведения и вид обработки.
- 4Настройте размещение в разделах и быстрый доступ для нужных пользователей.
- 5Запишите элемент и проверьте запуск из интерфейса под обычным пользователем.
Программное обращение к обработке из кода
Когда обработка зарегистрирована в справочнике, к ней обращаются через программный интерфейс БСП. Типовой сценарий: найти элемент справочника по имени или ссылке, подключить обработку и получить объект для вызова экспортных процедур и функций её модуля.
ОбработкаСсылка = Справочники.ДополнительныеОтчетыИОбработки
.НайтиПоНаименованию("Загрузка прайсов");
ИмяОбработки = ДополнительныеОтчетыИОбработки
.ПодключитьВнешнююОбработку(ОбработкаСсылка);
ОбъектОбработки = ВнешниеОбработки.Создать(ИмяОбработки, Ложь);
Результат = ОбъектОбработки.ЗагрузитьДанные(ПараметрыЗагрузки);
Метод ПодключитьВнешнююОбработку() возвращает имя, под которым обработка зарегистрирована в менеджере внешних обработок текущего сеанса. Второй параметр ВнешниеОбработки.Создать() отвечает за безопасный режим: Ложь — обычный режим, Истина — безопасный, с ограничением доступа к файловой системе и COM-объектам.
Если обработка не зарегистрирована в справочнике, а лежит файлом на диске сервера, её можно создать напрямую по полному пути. Это работает только в серверном контексте и требует, чтобы у учетной записи службы сервера 1С был доступ к каталогу с файлом.
ОбъектОбработки = ВнешниеОбработки.Создать(
"D:\1C\Обработки\ЗагрузкаПрайсов.epf", Ложь);
ОбъектОбработки.ВыполнитьЗагрузку();
ОбъектОбработки = ВнешниеОбработки.Создать("D:\1C\Обработки\ЗагрузкаПрайсов.epf", Ложь);
ОбъектОбработки.ВыполнитьЗагрузку();Вызов команды обработки без создания объекта
Не всегда нужно получать объект обработки и вызывать его методы вручную. БСП умеет выполнять команды, описанные в СведенияОВнешнейОбработке(), через единую точку входа — процедуру ДополнительныеОтчетыИОбработки.ВыполнитьКоманду(). Это стандартный путь для обработок заполнения табличных частей, печатных форм и команд «вызов клиентского метода».
Процедура принимает структуру параметров команды, где указывается ссылка на элемент справочника, идентификатор команды и объекты назначения (например, массив ссылок на документы). Такой вызов корректно работает с безопасным режимом и правами, заданными в карточке обработки, поэтому предпочтителен для типовых конфигураций.
Для фонового выполнения длительных операций используйте ДлительныеОперации.ВыполнитьВФоне() с указанием метода обработки — тогда пользователь увидит индикатор выполнения вместо зависшего интерфейса, а результат можно забрать по завершении задания.
Как проверить, что обращение к обработке сработало
Признак корректного подключения — отсутствие исключения на строке ВнешниеОбработки.Создать() и доступность экспортных методов объекта. Если вызов оформлен в попытку/исключение, обязательно логируйте ОписаниеОшибки() в журнал регистрации или в собственный регистр: молча «проглоченная» ошибка — главная причина ситуаций «обработка вроде запустилась, но ничего не сделала».
Проверяйте не только факт выполнения, но и результат: обработка загрузки должна вернуть количество созданных объектов или ссылки на них, обработка печати — сформированный табличный документ. Сверьте эти данные с ожидаемыми вручную на тестовом примере, прежде чем ставить вызов в регламентное задание.
Как проверить результат
Метод Создать() вернул объект без исключения
Ошибка «Ошибка при создании внешней обработки» или «файл не обнаружен»
Экспортная процедура выполнилась и вернула результат
«Метод объекта не обнаружен» — нет Экспорт или неверное имя
Обработка видна в интерфейсе и запускается под обычной учетной записью
Обработки нет в списке — не настроен быстрый доступ или права
Типичные ошибки и ограничения
Чаще всего обращение к внешней обработке ломается на четырёх местах. Первое — отсутствие функции СведенияОВнешнейОбработке(): файл открывается вручную, но не регистрируется в БСП. Второе — вызов неэкспортных методов. Третье — обращение к файлу по локальному пути клиента из серверного кода: на сервере диска «C:» пользователя не существует. Четвёртое — безопасный режим: в нем запрещены операции с файловой системой, COM и внешними компонентами, и обработка, рассчитанная на них, падает с ошибкой доступа.
Отдельное ограничение — веб-клиент и модель сервиса (SaaS). Во фреш-сервисах и облачных режимах внешние обработки подключаются только через механизм дополнительных отчетов и всегда в безопасном режиме; прямое создание по пути к файлу недоступно в принципе. Если обработка критично зависит от файловых операций, её логику нужно переносить в расширение конфигурации.
Что выбрать в вашей ситуации
Итоговый выбор способа обращения определяется частотой использования и окружением. Разовые сервисные задачи администратора — ручное открытие файла. Регулярная работа пользователей в типовой конфигурации — регистрация в справочнике дополнительных обработок с настройкой прав. Интеграционные сценарии и регламентные задания — программный вызов через БСП с логированием ошибок и фоновым выполнением длительных операций.
Как выбрать способ обращения
Что важно запомнить
Разовый запуск — через «Файл → Открыть», постоянная работа — через справочник дополнительных обработок, вызов из кода — через ПодключитьВнешнююОбработку() и ВнешниеОбработки.Создать(). Всегда проверяйте наличие «Экспорт» у вызываемых методов, учитывайте безопасный режим и логируйте ошибки.
Частые вопросы
Чем внешняя обработка отличается от расширения конфигурации?
Внешняя обработка — отдельный файл, который подключается на время выполнения и не меняет конфигурацию. Расширение устанавливается в базу, может изменять формы, модули и роли типовой конфигурации и сохраняет обновляемость. Для постоянной бизнес-логики с изменением интерфейса лучше подходит расширение, для автономных сервисных операций — обработка.
Почему БСП не принимает мой .epf-файл при регистрации?
Наиболее вероятная причина — в модуле обработки нет функции СведенияОВнешнейОбработке(), возвращающей структуру с видом, версией и командами. Без неё механизм не понимает, как представить обработку пользователям. Шаблон функции есть в демонстрационных обработках БСП и в документации к библиотеке.
Можно ли вызвать внешнюю обработку из регламентного задания?
Да, это стандартный сценарий. В коде задания найдите элемент справочника дополнительных обработок, подключите его через ПодключитьВнешнююОбработку() и создайте объект. Учтите, что регламентное задание выполняется на сервере без пользовательского интерфейса: обработка не должна открывать формы и обращаться к клиентским файлам.
Обработка работает у администратора, но не у пользователя. Что проверить?
Проверьте три вещи: включен ли пользователь в список быстрого доступа в карточке обработки, есть ли у его роли право на чтение справочника дополнительных отчетов и обработок, не падает ли сама обработка из-за недостатка прав на данные, которые она читает или изменяет. Третий случай виден в журнале регистрации как ошибка доступа при выполнении.
Безопасно ли отключать безопасный режим при вызове обработки?
Только если вы полностью контролируете код обработки и понимаете, какие операции она выполняет. Обычный режим дает коду полный доступ к файловой системе сервера и COM-объектам с правами службы сервера 1С. Для обработок из внешних источников безопасный режим отключать не следует — ограничения защищают базу и сервер от повреждений.