В чем разница между бесшовной интеграцией и OLE/COM соединением в 1С:Документооборот?

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот IT и автоматизация бизнеса
← На главную

При построении архитектуры взаимодействия между основной базой (например, ERP, УТ или КА) и 1С:Документооборотом часто возникает вопрос: использовать ли проверенный годами COM или внедрять современную бесшовную интеграцию. На первый взгляд может показаться, что разницы в «транспорте» данных нет, если базы находятся на одном сервере, однако это заблуждение. В этой статье мы подробно разберем, почему бесшовная интеграция — это не просто маркетинговый термин, и проясним технические детали работы с XDTO.

Понятие бесшовной интеграции: шире, чем просто обмен данными

Для начала проанализируем, что именно скрывается под термином «бесшовная интеграция». Многие ошибочно полагают, что это альтернатива COM или Web-сервисам. На самом деле, бесшовная интеграция — это прикладной результат, когда пользователь работает в интерфейсе одной программы, но фактически оперирует данными другой. Рассмотрим ключевые отличия:

  1. Транспортный уровень: Бесшовная интеграция может использовать разные протоколы передачи данных (веб-сервисы SOAP, HTTP-сервисы, или даже тот же COM). Однако стандартом де-факто для современных систем являются веб-сервисы.
  2. Библиотека интеграции с документооборотом (БИД): Это готовый набор программного кода и интерфейсных форм. Программисту не нужно писать с нуля методы для передачи файлов или открытия карточки документа. Все уже реализовано в БИД.
  3. Интерфейсное решение: Основная фишка заключается в том, что формы 1С:Документооборота открываются внутри вашей текущей базы. Данные «подтягиваются» динамически, не создавая дублей в основной базе.

Сравнение стабильности: OLE/COM против Веб-сервисов

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

Зависимость от ОС и разрядности. Технология COM (Component Object Model) жестко привязана к Windows. Если в будущем вы решите перевести сервер 1С на Linux, все ваши доработки на COM перестанут работать. Кроме того, COM крайне капризен к разрядности (32/64 бит) клиента и сервера. Веб-сервисам, на которых строится бесшовная интеграция, абсолютно неважно, на какой ОС и в какой разрядности работает база.

Изоляция и ресурсы. При использовании COM в целевой базе создается полноценный сеанс пользователя. Он потребляет значительный объем оперативной памяти и держит лицензию. Веб-сервисы работают в контексте пула соединений: запрос пришел, обработался за миллисекунды, и ресурс освободился. Это гораздо экономнее с точки зрения нагрузки на сервер.

Лицензирование. Проанализируем экономический аспект. COM-соединение занимает одну лицензию на все время подключения. Веб-сервис потребляет лицензию только на время выполнения вызова (при использовании клиент-серверного варианта и правильной настройке пула). Это позволяет большему количеству пользователей работать с интеграцией при том же количестве купленных лицензий.

Загадка пространства имен http://www.1c.ru/dm

Проанализируем технический вопрос, который часто возникает при изучении кода типовых интеграций. В методах работы с XDTO (например, при вызове метода execute) встречается строка http://www.1c.ru/dm. Выясним, что это такое.

Это Пространство имен (Namespace URI). Важно понимать, что это не живая ссылка в интернете, по которой можно что-то скачать. Это уникальный текстовый идентификатор. Разберем по шагам, зачем он нужен:

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


ТипОбъекта = ФабрикаXDTO.Тип("http://www.1c.ru/dm", "DMGetDocumentsRequest");
Запрос = ФабрикаXDTO.Создать(ТипОбъекта);
// Далее заполняются свойства объекта и отправляются через веб-сервис

Интеграция и расширения: нужно ли снимать с поддержки?

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

Большинство функций можно внедрить в расширение, не затрагивая ядро системы. В то время как самописный обмен на COM часто требует внедрения кода непосредственно в модули объектов (например, в обработку проведения), что как раз усложняет дальнейшее обновление программы.

Преимущества использования БИД перед самописным OLE-обменом

Рассмотрим ситуацию, когда перед программистом стоит задача: «При нажатии кнопки в УТ должен стартовать процесс согласования в ДО». Если делать это через COM, вам придется:

  1. Изучить структуру таблиц Документооборота.
  2. Написать код авторизации.
  3. Написать код создания бизнес-процесса и привязки к нему предмета.
  4. Продумать обработку ошибок связи.

В случае бесшовной интеграции (через БИД), вы используете готовые инструменты. Разберем возможности, которые вы получаете «из коробки»:

Сквозная авторизация (SSO). Если настроена синхронизация пользователей и Active Directory, пользователь ERP даже не заметит, как система авторизовала его в ДО. В COM передачу паролей пришлось бы реализовывать вручную (и небезопасно).

Правила интеграции. В 1С:Документооборот 3.0 архитектура позволяет настраивать связи объектов через визуальный конструктор. Вы просто указываете: «Поле Организация в ERP соответствует полю Организация в ДО». Код для этого писать не нужно вообще.

Бизнес-события. Вы можете настроить систему так, что при установке галочки «Согласовано» в документе ERP, в Документообороте автоматически создастся задача или завершится процесс. Это реализуется через подписки на события, которые уже встроены в БИД.

Резюме

Подводя итог, можно сказать следующее: OLE/COM — это технология прошлого века, оправданная только в очень специфических случаях для связи со старыми системами на 1С 7.7. Для современной работы с 1С:Документооборотом следует использовать бесшовную интеграцию на базе БИД и веб-сервисов. Это обеспечит стабильность, кроссплатформенность, экономию лицензий и значительно сократит время на разработку и поддержку системы.

← На главную