Каталог решений - Взаимодействие между базами 1С через COM

Взаимодействие между базами 1С через COM

Взаимодействие между базами 1С через COM

В наличии

Рассмотрено много особенностей взаимодействия между базами 1С по COM технологии

Категория:

Описание

Взаимодействие между базами 1С через COM

В этой статье я расскажу о многих особенностях взаимодействия между базами 1С по COM технологии, накопленных за годы развития и использования интеграционного коммерческого продукта 2iS:Интеграция компании 2iS.

Термины

ОС – операционная система

COM-клиент – процесс(поток) ОС, запросивший создание COM-объекта

COM-сервер – COM-объект, созданный по запросу клиента

Издание платформы – подстрока до 2-й точки версии платформы (например 8.2, 8.3)

Com-соединитель – COM-объект V8X.ComСonnector для создания внешних соединений с базами 1С

Automation-сервер – он же OLE-сервер, COM-объект V8X.Application для создания приложений 1С

Сборка платформы – полная строка версии платформы (например 8.2.19.130, 8.2.16.352)

 

COM классы платформы

Виды COM классов

 

Для каждого издания платформы в системном реестре регистрируются собственные классы для взаимодействия с базами. Символ “X” обозначает место подстановки номера издания платформы (например 0,1,2,3,4).

 

  1. V8X.ComСonnector — Com-соединитель / Менеджер COM-соединений

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

    2. Регистрация и отмена регистрации выполняется отдельно для каждой разрядности (32b и 64b)

      1. Регистрация: Regsvr32 “<ПутьНужнойРазрядности>\bin\comcntr.dll”

      2. Отмена регистрации: Regsvr32 “<ПутьНужнойРазрядности>\bin\comcntr.dll” /u

  2. V8X.Application — Automation-сервер толстого клиента

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

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

    3. Регистрация и отмена регистрации

      1. Регистрация — 1cv8.exe /regserver

      2. Отмена регистрации — 1cv8.exe /unregserver

  3. V8Xc.Application — Automation-сервер тонкого клиента

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

    2. Регистрация и отмена регистрации

      1. Регистрация — 1cv8c.exe /regserver

      2. Отмена регистрации — 1cv8c.exe /unregserver

Привязка COM классов к dll-файлам

 

Привязка имени COM класса к конкретному dll-файлу осуществляется через ветку HKEY_CLASSES_ROOT системного реестра, которая собирается следующим образом:

 

  1. Берется содержимое ветки HKEY_CURRENT_USER\Software\Classes

  2. Добавляется содержимое ветки HKEY_LOCAL_MACHINE\Software\Classes, но только те ключи, которые отсутствуют в п.1.

 

Поэтому регистрация класса от имени пользователя имеет приоритет над общей регистрацией.

 

Для 32-b и 64-b режимов исполнения кода в реестре хранятся отдельные ветки и соответственно отдельные привязки. Поэтому управление COM-классами для них осуществляется независимо. В частности это касается класса V8X.ComConnector (на 64-b операционной системе)

 

  1. 64-b — c:\Program Files\1cv8*\<Версия>\bin\comcntr.dll

  2. 32-b — c:\Program Files (x86)\1cv8*\<Версия>\bin\comcntr.dll

Подключение внешнего соединения

Рассмотрим алгоритм подключения внешнего соединения в деталях

  1. Создание COM-объекта Com-соединитель (Имя класса — V8X.ComConnector). Варианты:

      1. Внутрипроцессное (inproc)

        1. Должен быть зарегистрирован класс V8X.ComConnector той же разрядности, что и COM-клиент

          1. Если издание платформы COM-клиента совпадает с изданием платформы COM-сервера, то также требуется равенство сборки платформы COM-клиента и COM-сервера.

          2. Он регистрируется при установке платформы с опцией «Внешнее соединение». В любой момент его можно зарегистрировать командой «Regsvr32 comcntr.dll» в каталоге исполняемых файлов платформы.

        2. COM-объект создается в памяти COM-клиента

        3. Затраты на создание примерно – 0.01(первое)/0.001(второе) cек

        4. Пример

          КомСоединитель = Новый COMОбъект(“V83.ComConnector”);

          ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);

      2. Внепроцессное локальное (local)

        1. Должен быть зарегистрирован класс V8X.ComConnector любой разрядности и сборки платформы. Необходимо настроить через dcomcnfg.exe COM+ приложение с активацией «серверное приложение»/«Server apllication». Подробнее рассмотрено далее.

        2. COM-объект создается в памяти служебного хост-процесса (dllhost.exe) на компьютере COM-клиента

        3. Затраты на создание примерно – 0.06(первое)/0.03(второе) сек

        4. Пример

          КомСоединитель = Новый COMОбъект(“V83.ComConnector”);

          ВнешнееСоединение = КомСоединитель.Connect(СтрокаСоединения);

      3. Внепроцессное нелокальное (DCOM)

        1. На нелокальном компьютере должен быть зарегистрирован класс V8X.ComConnector любой разрядности и сборки платформы. Необходимо настроить на нелокальном компьютере через dcomcnfg.exe COM+ приложение с активацией «Cерверное приложение»/«Server apllication». Подробнее рассмотрено далее.

        2. Необходимо настроить на нелокальном компьютере роль «Сервер приложений»/«Application server» и включить нелокальный доступ к COM+, выбрав опцию «Сетевой доступ к COM+»/”COM+ network access”. Подробнее рассмотрено далее.

        3. COM-объект создается в памяти служебного хост-процесса (dllhost.exe) на другом компьютере

        4. Затраты на создание примерно

          1. Экспериментальные данные

Задержка канала, мс

Длительность создания COM-объекта, мс

0

60

30

700

80

2000

170

4000

has been added to your cart:
Оформление заказа