Переход инфраструктуры «1С:Предприятие» с Windows на операционные системы семейства Linux — это не просто смена среды выполнения, а существенная перестройка архитектуры взаимодействия с внешними приложениями. Главная трудность, с которой сталкиваются разработчики — отсутствие технологии COM (Component Object Model) в Linux. Разберем по шагам, как правильно адаптировать конфигурации, какие кроссплатформенные механизмы предоставляет платформа и как избежать типичных ошибок при миграции.
Традиционно механизм v83.ComConnector использовался для прямого подключения к другим базам 1С. В среде Linux этот подход не работает. Рассмотрим современные и более эффективные альтернативы:
ДвоичныеДанные внутри ХранилищеЗначения.Для программного управления кластером серверов 1С под управлением Windows часто создавался COM-объект агента сервера. На Linux для этих целей проанализируем использование утилит администрирования.
Вместо COM необходимо развернуть сервис администрирования ras (Remote Administration Service) и обращаться к нему через консольную утилиту rac (Remote Administration Client). Для более сложных задач автоматизации можно использовать скрипты на Python или Go, которые взаимодействуют с сервером администрирования через его программный интерфейс.
Файловая система Linux кардинально отличается от Windows. Посмотрим на критические моменты, требующие рефакторинга кода:
Report.xml и report.xml — это два разных файла. Во всем коде пути к файлам должны быть указаны в строгом соответствии с регистром.ПолучитьРазделительПути(). Аналогично для масок файлов — используйте ПолучитьМаскуВсеФайлы() вместо «*.*».РабочийКаталогДанныхПользователя(), КаталогДокументов(), КаталогВременныхФайлов().Для второстепенных функций (например, прямой экспорт в 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), иначе печатные формы могут «поехать» или отображаться в виде нечитаемых символов.