Как адаптировать конфигурацию 1С при переходе на Linux и чем заменить COM-объекты?

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

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

Замена COM-объектов при обмене данными

Традиционно механизм v83.ComConnector использовался для прямого подключения к другим базам 1С. В среде Linux этот подход не работает. Рассмотрим современные и более эффективные альтернативы:

  1. Веб-сервисы и HTTP-сервисы: Это стандартный кроссплатформенный подход. Обмен данными через веб-сервисы часто оказывается даже быстрее, чем через COM-соединение, особенно при передаче небольших объемов информации. Вы можете сериализовать данные в XML или JSON, либо передавать их как ДвоичныеДанные внутри ХранилищеЗначения.
  2. Обмен через файлы: Классический обмен файлами XML или формат обмена EnterpriseData остается актуальным. Если базы находятся в одной локальной сети, можно использовать сетевые каталоги или FTP.

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

Для программного управления кластером серверов 1С под управлением Windows часто создавался COM-объект агента сервера. На Linux для этих целей проанализируем использование утилит администрирования.

Вместо COM необходимо развернуть сервис администрирования ras (Remote Administration Service) и обращаться к нему через консольную утилиту rac (Remote Administration Client). Для более сложных задач автоматизации можно использовать скрипты на Python или Go, которые взаимодействуют с сервером администрирования через его программный интерфейс.

Особенности работы с файловой системой

Файловая система Linux кардинально отличается от Windows. Посмотрим на критические моменты, требующие рефакторинга кода:

  1. Регистрозависимость: В Linux имена файлов Report.xml и report.xml — это два разных файла. Во всем коде пути к файлам должны быть указаны в строгом соответствии с регистром.
  2. Слеши в путях: Никогда не прописывайте разделители каталогов («\» или «/») вручную. Используйте встроенную функцию ПолучитьРазделительПути(). Аналогично для масок файлов — используйте ПолучитьМаскуВсеФайлы() вместо «*.*».
  3. Системные каталоги: Вместо использования COM-объектов Windows (например, WScript.Shell) для получения путей пользователя, применяйте методы глобального контекста: РабочийКаталогДанныхПользователя(), КаталогДокументов(), КаталогВременныхФайлов().

Отключение платформозависимого кода

Для второстепенных функций (например, прямой экспорт в Microsoft Word) допустимо отключать их при работе клиента под Linux. Разберем пример того, как скрыть выполнение такого кода с помощью объекта СистемнаяИнформация:


&НаКлиенте
Процедура ОбработкаКоманды(ПараметрКоманды, ПараметрыВыполненияКоманды)
    Информация = Новый СистемнаяИнформация;
    
    // Проверяем тип платформы
    Если Информация.ТипПлатформы <> ТипПлатформы.Windows_x86 
         И Информация.ТипПлатформы <> ТипПлатформы.Windows_x86_64 Тогда
        
        ПоказатьПредупреждение(, НСтр("ru = 'Печать в Microsoft Word доступна только при работе в ОС Windows.'"));
        Возврат;
    КонецЕсли;

    // Выполнение кода для Windows
    // ...
КонецПроцедуры

Торговое оборудование и внешние компоненты

Использование старых драйверов торгового оборудования в виде `.dll` файлов станет невозможным. Выясним причину и пути решения:

Внешние компоненты должны быть написаны по технологии Native API (файлы `.so` для Linux). Большинство современных производителей касс и сканеров (таких как Атол или Штрих-М) уже поставляют свои драйверы в формате Native API. Важный нюанс при подключении оборудования через USB (эмуляция COM-портов): пользователю операционной системы, под которым работает сервер или клиент 1С, необходимо предоставить права на чтение портов, добавив его в группу dialout (или uucp).

Интеграция с внешними базами данных и шрифты

Если в конфигурации настроено подключение к внешним базам SQL через объекты ADODB, их необходимо заменить на внешние источники данных. В среде Linux для работы внешних источников данных потребуется установленный пакет unixodbc, а для подключения к Microsoft SQL Server — специальный драйвер «Microsoft ODBC Driver for SQL Server (Linux version)».

Важное замечание по визуализации: Сервер платформы 1С для корректного формирования табличных документов, штрихкодов и файлов PDF требует наличия стандартных шрифтов. Обязательно установите в Linux пакет шрифтов (например, ttf-mscorefonts-installer), иначе печатные формы могут «поехать» или отображаться в виде нечитаемых символов.

← На главную