Как правильно подключить 1С к серверу на Linux и избежать проблем с COM-соединениями?

Программист 1С v8.3 (Управляемые формы)
← К списку

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

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

Отказ от COM-соединений на Linux

Прежде всего, важно понимать, что технология COM (Component Object Model), на которой базируется работа с объектом COMОбъект в 1С, является специфичной для операционных систем семейства Windows. На серверах под управлением Linux эта технология не поддерживается. Следовательно, любые попытки использовать COMОбъект или, например, v83.ComConnector для администрирования кластера серверов, будут безуспешны.

Вместо того чтобы пытаться адаптировать Windows-технологии, мы с вами рассмотрим специализированные кроссплатформенные механизмы, которые платформа 1С:Предприятие предлагает для работы в Linux и macOS.

Альтернативы для администрирования кластера серверов 1С

Если нам необходимо администрировать кластер серверов 1С:Предприятия, работающий на Linux, нам следует полностью отказаться от использования объектной модели агента сервера через COM-объект v83.ComConnector. Вместо этого, мы будем использовать сервер администрирования (ras) и утилиту администрирования (rac).

  1. Сервер администрирования (ras): Это служба удаленного администрирования, которая предоставляет полный доступ к управлению кластером 1С:Предприятия 8. Она работает независимо от оснастки MMC «Администрирование серверов 1С Предприятия», которая доступна только в Windows. RAS должен быть запущен на всех серверах 1С и по умолчанию слушает порт 1545.
  2. Утилита администрирования (rac): Это консольная утилита, которую мы можем использовать из командной строки для получения информации о кластерах, хостах, рабочих процессах и других параметрах сервера 1С. Она позволяет выполнять различные административные задачи, такие как создание/удаление информационных баз, управление сеансами, блокировка соединений и многое другое.

Для примера, если бы мы захотели получить список кластеров, мы могли бы использовать команду rac. Также существует графическая обработка «Управление серверами» (УправлениеСерверами.epf), которая взаимодействует с RAS, предоставляя более наглядный интерфейс для управления.

Работа с путями к рабочим каталогам

При разработке кода, который должен быть кроссплатформенным, крайне важно избегать использования COM-объектов операционной системы Windows для получения путей к файлам и каталогам. Платформа 1С:Предприятие предлагает специальные методы глобального контекста, которые корректно работают как в Windows, так и в Linux.

Мы можем использовать следующие методы:

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

Использование внешних компонент через Native API

В тех случаях, когда нам требуется расширить функциональность 1С:Предприятия с помощью внешних компонент, но COM-технология недоступна (как в Linux или macOS), мы можем обратиться к технологии Native API. Это собственный интерфейс системного программирования 1С:Предприятия 8, который позволяет создавать кроссплатформенные внешние компоненты.

Компоненты, разработанные с использованием Native API, могут подключаться как в клиентских приложениях, так и на сервере 1С:Предприятия. Обратите внимание на один важный нюанс: при работе компоненты на сервере вызов метода ПодключитьВнешнююКомпоненту() необходимо выполнять каждый раз перед созданием экземпляра внешней компоненты. Давайте посмотрим на пример:


// Пример использования внешней компоненты на сервере
// Предполагаем, что MyNativeComponent.osd - это кроссплатформенная компонента
// (или .so для Linux, .dll для Windows)

Если Не ПодключитьВнешнююКомпоненту("МояВнешняяКомпонента", "MyNativeComponent", ТипВнешнейКомпоненты.Нативная) Тогда
    Сообщить("Не удалось подключить внешнюю компоненту!");
    Возврат;
КонецЕсли;

Попытка
    Компонента = Новый ("AddIn.MyNativeComponent.MyObject");
    // Дальнейшая работа с Компонентой
    Компонента.ВыполнитьДействие();
Исключение
    Сообщить("Ошибка при создании или использовании внешней компоненты: " + ОписаниеОшибки());
КонецПопытки;

Этот подход обеспечивает гибкость и позволяет расширять возможности системы без привязки к конкретной ОС.

Интеграция с помощью веб-сервисов и HTTP-сервисов

Когда речь заходит об интеграции 1С:Предприятия с другими информационными системами, веб-сервисы и HTTP-сервисы выступают как одни из наиболее рекомендованных кроссплатформенных механизмов. Они идеально подходят для реализации сервис-ориентированной архитектуры (SOA) и позволяют обмениваться данными через стандартные HTTP-запросы.

Публикация веб-сервисов на Linux-сервере 1С может быть выполнена различными способами, в том числе с использованием утилиты webinst, которая работает как в Windows, так и в Linux. Важно отметить, что эти механизмы предоставляют надежный и стандартизированный способ взаимодействия, не зависящий от операционной системы.

Механизм внешнего соединения

Механизм ВнешнееСоединение — это мощный инструмент для интеграции, который обеспечивает надежный и быстрый программный доступ к данным 1С:Предприятия из внешних приложений. Он является более современным и эффективным подходом по сравнению с устаревшим Automation-сервером.

Давайте разберем его преимущества:

Для того чтобы использовать функции общих модулей через внешнее соединение, необходимо установить флажок "Внешнее соединение" в свойствах соответствующего общего модуля. Это позволит внешним приложениям вызывать экспортные функции этих модулей.

Общие рекомендации при работе 1С на Linux

Переход на Linux для сервера 1С:Предприятия открывает новые возможности, но требует учета некоторых особенностей. Мы подготовили для вас список важных рекомендаций:

  1. Выбор СУБД: Чаще всего для 1С на Linux используется PostgreSQL. Крайне рекомендуем использовать адаптированные сборки от 1С или PostgresPro. "Ванильный" PostgreSQL из стандартных репозиториев дистрибутива может работать некорректно или неоптимально.
  2. Поддерживаемые ОС: Платформа 1С:Предприятие поддерживает работу на различных дистрибутивах Linux, включая Ubuntu, Debian, Astra Linux, ALT и РЕД ОС. Убедитесь, что выбранный вами дистрибутив соответствует требованиям платформы.
  3. Преимущества использования Linux: Переход на Linux для сервера 1С может принести существенную экономию на лицензиях операционной системы и СУБД. Кроме того, Linux обеспечивает повышенную защищенность и стабильность работы системы, что является значимым плюсом.
  4. Интеграция с внешними источниками данных: 1С на Linux сохраняет возможность подключаться к различным внешним источникам данных, таким как MySQL и MS SQL, используя стандартный механизм ODBC и соответствующие драйверы.
  5. Анализ и адаптация конфигурации: Для успешной работы конфигураций 1С под Linux очень важно анализировать код на наличие платформенно-зависимых участков. Мы рекомендуем использовать функции Библиотеки Стандартных Подсистем (БСП) для определения типа платформы, например, ЭтоLinuxСервер() или ЭтоLinuxКлиент(). Также следует избегать строковых констант для путей к файлам, всегда используя стандартные методы платформы, такие как КаталогВременныхФайлов() и КаталогДокументов(), о которых мы говорили ранее.

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

← К списку