Перейти к содержимому

❓ 1.4 Как устроены внешние обработки в 1С

ИТС: Платформа — Внешние обработки и отчеты
https://its.1c.ru/db/v8327doc#bookmark:dev:TI000000332

ИТС: Библиотека стандартных подсистем — Дополнительные отчеты и обработки
https://its.1c.ru/db/bsp321doc#content:3059:hdoc


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

Ключевые особенности внешних обработок:

  • Код внешней обработки компилируется при открытии, поэтому достаточно сохранить и переоткрыть файл, чтобы изменения применились.
  • Обработку можно загрузить в конфигурацию или выгрузить из неё без потери функциональности.
  • Редактирование кода возможно только в режиме Конфигуратора.
  • Обработка может храниться:
    • в двоичном формате .epf
    • или в виде набора xml-файлов
  • В конфигураторе можно работать (открыть) и с .epf, и с xml-файлами.
  • Для доступа к внешним обработкам из встроенного языка используется объект встроенного языка ВнешниеОбработки.

Для работы с внешней обработкой необходимо создать объект обработки, для этого используется метод Создать.

Важно:

  • В Создать можно передать:
    • полный путь к файлу обработки
    • или имя обработки, полученное ранее через метод Подключить

Про БСП (Библиотека стандартных подсистем)

Заголовок раздела «Про БСП (Библиотека стандартных подсистем)»

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

Особенность:

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

Из-за этого при отладке обычно приходится:

  • либо менять способ создания обработки
  • либо использовать специальные расширения

Примеры: подключение и создание внешней обработки

Заголовок раздела «Примеры: подключение и создание внешней обработки»
// Подключение обработки
ИмяОбработки = ВнешниеОбработки.Подключить(АдресФайла);
// Создание объекта внешней обработки
ОбъектВнешняяОбработка = ВнешниеОбработки.Создать(АдресФайла);
// или
ОбъектВнешняяОбработка = ВнешниеОбработки.Создать(ИмяОбработки);

Как это выглядит в БСП (концептуально)

// Как подключается обработка в БСП
// ДополнительныеОтчетыИОбработки.ПодключитьВнешнююОбработку(Ссылка)
// Функция возвращает имя внешней обработки
ИмяОбработки = ВнешниеОбработки.Подключить(АдресВоВременномХранилище);
// Получение объекта обработки
// ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(Ссылка)
Возврат ВнешниеОбработки.Создать(ИмяОбработки);

Чтобы тестировать обработку напрямую, можно:

  • передавать путь к файлу в метод Создать
  • или изменить логику Подключить, чтобы передавать путь к файлу обработки, которую надо отладить (открыть в конфигураторе)

Примерно так работает расширение от IRONSKILLS для тестирования внешних обработок:
https://ironskills.by/tpost/vr9ypy76d1-otladka-dopolnitelnih-obrabotok-1s.