При построении архитектуры взаимодействия между основной базой (например, ERP, УТ или КА) и 1С:Документооборотом часто возникает вопрос: использовать ли проверенный годами COM или внедрять современную бесшовную интеграцию. На первый взгляд может показаться, что разницы в «транспорте» данных нет, если базы находятся на одном сервере, однако это заблуждение. В этой статье мы подробно разберем, почему бесшовная интеграция — это не просто маркетинговый термин, и проясним технические детали работы с XDTO.
Для начала проанализируем, что именно скрывается под термином «бесшовная интеграция». Многие ошибочно полагают, что это альтернатива COM или Web-сервисам. На самом деле, бесшовная интеграция — это прикладной результат, когда пользователь работает в интерфейсе одной программы, но фактически оперирует данными другой. Рассмотрим ключевые отличия:
COM). Однако стандартом де-факто для современных систем являются веб-сервисы.БИД.Разберем ситуацию, когда обе базы находятся на одном физическом сервере под управлением Windows. Казалось бы, COM должен работать быстрее, но на практике мы сталкиваемся с рядом проблем, которые решает веб-сервис:
Зависимость от ОС и разрядности. Технология COM (Component Object Model) жестко привязана к Windows. Если в будущем вы решите перевести сервер 1С на Linux, все ваши доработки на COM перестанут работать. Кроме того, COM крайне капризен к разрядности (32/64 бит) клиента и сервера. Веб-сервисам, на которых строится бесшовная интеграция, абсолютно неважно, на какой ОС и в какой разрядности работает база.
Изоляция и ресурсы. При использовании COM в целевой базе создается полноценный сеанс пользователя. Он потребляет значительный объем оперативной памяти и держит лицензию. Веб-сервисы работают в контексте пула соединений: запрос пришел, обработался за миллисекунды, и ресурс освободился. Это гораздо экономнее с точки зрения нагрузки на сервер.
Лицензирование. Проанализируем экономический аспект. COM-соединение занимает одну лицензию на все время подключения. Веб-сервис потребляет лицензию только на время выполнения вызова (при использовании клиент-серверного варианта и правильной настройке пула). Это позволяет большему количеству пользователей работать с интеграцией при том же количестве купленных лицензий.
Проанализируем технический вопрос, который часто возникает при изучении кода типовых интеграций. В методах работы с XDTO (например, при вызове метода execute) встречается строка http://www.1c.ru/dm. Выясним, что это такое.
Это Пространство имен (Namespace URI). Важно понимать, что это не живая ссылка в интернете, по которой можно что-то скачать. Это уникальный текстовый идентификатор. Разберем по шагам, зачем он нужен:
XDTO-пакет) использовать для разбора сообщения, пакет помечается этим пространством имен.XDTO, у которого в свойстве «Пространство имен» прописано http://www.1c.ru/dm.Посмотрим на пример того, как это может выглядеть в коде при создании объекта через фабрику XDTO:
ТипОбъекта = ФабрикаXDTO.Тип("http://www.1c.ru/dm", "DMGetDocumentsRequest");
Запрос = ФабрикаXDTO.Создать(ТипОбъекта);
// Далее заполняются свойства объекта и отправляются через веб-сервис
Существует миф, что для внедрения бесшовной интеграции нужно обязательно изменять основную конфигурацию и снимать её с поддержки. Выясним текущую ситуацию. Современная Библиотека интеграции с документооборотом (БИД) отлично адаптирована для работы через механизм расширений.
Большинство функций можно внедрить в расширение, не затрагивая ядро системы. В то время как самописный обмен на COM часто требует внедрения кода непосредственно в модули объектов (например, в обработку проведения), что как раз усложняет дальнейшее обновление программы.
Рассмотрим ситуацию, когда перед программистом стоит задача: «При нажатии кнопки в УТ должен стартовать процесс согласования в ДО». Если делать это через COM, вам придется:
В случае бесшовной интеграции (через БИД), вы используете готовые инструменты. Разберем возможности, которые вы получаете «из коробки»:
Сквозная авторизация (SSO). Если настроена синхронизация пользователей и Active Directory, пользователь ERP даже не заметит, как система авторизовала его в ДО. В COM передачу паролей пришлось бы реализовывать вручную (и небезопасно).
Правила интеграции. В 1С:Документооборот 3.0 архитектура позволяет настраивать связи объектов через визуальный конструктор. Вы просто указываете: «Поле Организация в ERP соответствует полю Организация в ДО». Код для этого писать не нужно вообще.
Бизнес-события. Вы можете настроить систему так, что при установке галочки «Согласовано» в документе ERP, в Документообороте автоматически создастся задача или завершится процесс. Это реализуется через подписки на события, которые уже встроены в БИД.
Подводя итог, можно сказать следующее: OLE/COM — это технология прошлого века, оправданная только в очень специфических случаях для связи со старыми системами на 1С 7.7. Для современной работы с 1С:Документооборотом следует использовать бесшовную интеграцию на базе БИД и веб-сервисов. Это обеспечит стабильность, кроссплатформенность, экономию лицензий и значительно сократит время на разработку и поддержку системы.