Как настроить подключение к базе 1С на Windows из базы 1С на Linux?

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

Причина ошибки при использовании V83.COMConnector на Linux

При попытке выполнить код подключения к другой информационной базе 1С под управлением операционной системы Linux вызов Новый COMObject("V83.COMConnector") завершается ошибкой: «COM-объекты поддерживаются только в операционных системах Windows».

Выясним причину этой проблемы. Технология COM (Component Object Model) и библиотеки внешних соединений (такие как comcntr.dll) являются специфичными инструментами операционной системы Windows API. В платформе «1С:Предприятие», запущенной в среде Linux, объект COMObject принципиально не поддерживается на уровне ядра системы.

Заменить вызов COMObject одной строкой на какой-то аналогичный универсальный объект без изменения архитектуры взаимодействия не получится, так как прямого единого кроссплатформенного аналога COM-интерфейса в 1С «из коробки» не предусмотрено.

Вариант 1. Перенос выполнения COM-соединения на сторону Windows-клиента

Если в вашей системе используется клиент-серверный вариант, где сервер 1С работает под управлением Linux, но пользовательский клиент (тонкий или толстый) запущен на компьютере с ОС Windows, проанализируем способ обхода ограничений без отказа от COM-технологии.

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

  1. Убедитесь, что процедура подключения выполняется в контексте &НаКлиенте на компьютере пользователя с ОС Windows.
  2. На рабочей станции с Windows должна быть зарегистрирована библиотека COM-соединителя (comcntr.dll) нужной разрядности.
  3. Выполните подключение к целевой базе и считывание данных на клиенте, после чего передайте полученные значения на Linux-сервер для дальнейшей обработки.

Вариант 2. Использование Web-сервисов и HTTP-сервисов

Рассмотрим наиболее универсальный и рекомендуемый фирмой 1С кроссплатформенный подход для интеграции баз данных.

Вместо COM-соединения в целевой базе (расположенной на Windows) создаются и публикуются сервисы обмена:

  1. Web-сервисы (SOAP) и WSПрокси: В базе-источнике разрабатывается Web-сервис. База-клиент под Linux подключается к нему с помощью объекта WSПрокси. Этот способ наиболее близок к COM по логике разработки, так как позволяет вызывать экспортируемые функции с передачей параметров.
  2. HTTP-сервисы: В целевой базе описывается HTTP-сервис, а отправка запросов из базы на Linux осуществляется через объекты HTTPСоединение и HTTPЗапрос. Передача данных производится в форматах JSON или XML.

Вариант 3. Подключение через REST API (OData)

Разберем вариант подключения, который не требует написания специального кода для экспорта данных в целевой базе.

Платформа 1С позволяет стандартными средствами опубликовать REST API (интерфейс OData). После публикации базы под Windows, клиентская база под Linux может выполнять к ней обычные HTTP-запросы для получения и записи данных справочников, документов и регистров.

Вариант 4. Промежуточный прокси-сервис на Windows

Если требуется сохранить действующий механизм COM-подключения, но основной сервер 1С работает на Linux, рассмотрим схему с промежуточным шлюзом:

  1. На отдельном компьютере или виртуальной машине с ОС Windows создается легкий веб-сервис.
  2. База 1С на Linux отправляет HTTP-запрос этому сервису с параметрами подключения.
  3. Прокси-сервис локально на Windows исполняет V83.COMConnector, подключается к целевой базе 1С, получает нужную информацию и возвращает результат на Linux-сервер в формате JSON или XML.

Вариант 5. Администрирование кластера серверов через RAS и RAC

Если COM-соединение планировалось использовать не для обмена данными, а для программного администрирования кластера 1С (управление сеансами, блокировками или базами данных), под Linux применяются специальные штатные утилиты:

  1. Запуск сервера администрирования RAS (Remote Administration Server).
  2. Использование утилиты RAC (Remote Administration Client) или встроенного объекта АдминистрированиеСервера в коде 1С для управления кластером без вызова COM.
← На главную