При интеграции двух информационных баз 1С часто возникает необходимость удаленного вызова готовой бизнес-логики без изменения типовой конфигурации. Удобным решением является хранение алгоритмов во внешней обработке в справочнике дополнительных отчетов и обработок (БСП) с последующим обращением к ее экспортным методам через V83.COMConnector.
Разберем детально, как правильно организовать вызов экспортных процедур и функций модуля объекта внешней обработки через COM-соединение, а также рассмотрим важные технические нюансы и ограничения контекста внешнего соединения.
Если во внешней информационной базе внедрена Библиотека стандартных подсистем (БСП), наиболее простым и надежным способом является получение объекта обработки через метод общего модуля ДополнительныеОтчетыИОбработки. Рассмотрим пример реализации по шагам:
V83.COMConnector.ДополнительныеОтчетыИОбработки (например, по реквизиту ИмяОбъекта или Наименование).ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки().Посмотрим на практический пример кода:
// Инициализируем COM-соединение
COMСоединитель = Новый COMОбъект("V83.COMConnector");
ПараметрыПодключения = "Srvr=""Server1C"";Ref=""TargetBase"";Usr=""IntegrationUser"";Pwd=""SecretPassword"";";
Попытка
БазаCOM = COMСоединитель.Connect(ПараметрыПодключения);
Исключение
ВызватьИсключение "Не удалось подключиться к информационной базе: " + ОписаниеОшибки();
КонецПопытки;
// Находим внешнюю обработку в справочнике БСП
СсылкаНаОбработку = БазаCOM.Справочники.ДополнительныеОтчетыИОбработки.НайтиПоРеквизиту("ИмяОбъекта", "ИмпортИзТдАгентскаяСхема");
Если Не БазаCOM.ЗначениеЗаполнено(СсылкаНаОбработку) Тогда
ВызватьИсключение "Внешняя обработка не найдена в удаленной базе!";
КонецЕсли;
// Получаем объект обработки через функцию БСП
ОбъектОбработки = БазаCOM.ДополнительныеОтчетыИОбработки.ОбъектВнешнейОбработки(СсылкаНаОбработку);
// Вызываем экспортную процедуру модуля объекта внешней обработки
ОбъектОбработки.ЭкспортнаяПроцМодуляВнешОбр("Тест");
В случаях, когда конфигурация не содержит подсистемы БСП, подключение и создание объекта внешней обработки можно выполнить напрямую через менеджер ВнешниеОбработки, получив двоичные данные из хранилища без сохранения файла на диск.
Разберем по шагам последовательность действий:
ВнешниеОбработки.Подключить().ВнешниеОбработки.Создать() по возвращенному системному имени.Рассмотрим пример кода:
// Получаем навигационную ссылку на двоичные данные обработки
НавСсылка = БазаCOM.ПолучитьНавигационнуюСсылку(СсылкаНаОбработку, "ХранилищеОбработки");
// Регистрируем обработку в сеансе (безопасный режим отключен для примера)
ИмяПодключеннойОбработки = БазаCOM.ВнешниеОбработки.Подключить(НавСсылка, , Ложь);
// Создаем объект обработки и вызываем экспортный метод
ОбъектОбработки = БазаCOM.ВнешниеОбработки.Создать(ИмяПодключеннойОбработки);
Результат = ОбъектОбработки.ЭкспортнаяФункцияМодуля("Параметр1");
При использовании COM-соединения важно учитывать следующие системные ограничения платформы «1С:Предприятие»:
&НаКлиенте, а также любых интерактивных методов (Предупреждение, Вопрос, ОткрытьФорму), иначе платформа сгенерирует исключение.ВнешниеОбработки.Подключить() система может потребовать интерактивного подтверждения. Чтобы избежать ошибки в фоновом режиме, у пользователя интеграции в свойствах учетной записи должен быть отключен флаг «Защита от опасных действий».