Переход кассовых узлов на операционные системы семейства Linux (например, Ubuntu, Astra Linux или РЕД ОС) часто сопровождается трудностями при подключении торгового оборудования. Одной из наиболее острых проблем является настройка эквайринговых терминалов, работающих под управлением программного обеспечения SmartSale (протокол DualConnect) от компании INPAS. В этой статье мы подробно разберем, как обеспечить стабильную работу терминала в среде Linux для 1С:Предприятие, проанализируем необходимые системные компоненты и рассмотрим альтернативные методы интеграции.
Традиционно в среде Windows драйверы эквайринга INPAS использовали технологию COM-объектов. Однако в Linux платформа 1С не поддерживает COM, поэтому единственным штатным способом интеграции является использование технологии Native API. Компания INPAS поставляет специализированную библиотеку (обычно это файл с расширением .so), которая загружается непосредственно в адресное пространство 1С. Разберем по шагам, что требуется для того, чтобы эта библиотека успешно инициализировалась.
Одной из главных причин, по которой драйвер «не взлетает», является отсутствие необходимых системных библиотек или несоответствие их версий. Драйверы INPAS чувствительны к окружению. Рассмотрим основные пакеты, которые должны быть установлены в системе. Проанализируем состояние библиотек OpenSSL. Современные дистрибутивы Linux (например, Ubuntu 22.04 и выше) используют OpenSSL версии 3.0, в то время как драйверы эквайринга часто требуют старую версию 1.1 или даже 1.0. Без них внешняя компонента 1С выдаст ошибку при попытке подключения.
Для исправления ситуации выполним установку необходимых пакетов в терминале:
sudo apt-get update
sudo apt-get install libssl1.1
sudo apt-get install pcscd libpcsclite1
Обратите внимание на демон pcscd. Он отвечает за работу со смарт-картами и ридерами. Даже если ваш терминал подключен по USB, драйвер может обращаться к этому сервису для инициализации защищенного соединения.
В Linux безопасность реализована строже, чем в Windows. По умолчанию пользователь, под которым запускается 1С, не имеет прав на запись в порты, через которые подключен терминал (обычно это /dev/ttyACM0 или /dev/ttyUSB0). Чтобы решить эту проблему раз и навсегда, настроим правила udev. Выясним идентификаторы вашего устройства с помощью команды lsusb. Найдите строку, соответствующую вашему терминалу (например, PAX или Verifone), и зафиксируйте значения idVendor и idProduct.
Создадим файл правил, выполнив команду:
sudo nano /etc/udev/rules.d/99-inpas.rules
Внутри файла пропишем правило, которое даст права на чтение и запись всем пользователям группы dialout (в которую должен входить пользователь 1С):
SUBSYSTEM=="tty", ATTRS{idVendor}=="XXXX", ATTRS{idProduct}=="YYYY", MODE="0666", GROUP="dialout"
Замените XXXX и YYYY на ваши значения. После сохранения файла перезагрузите правила командой sudo udevadm control --reload-rules.
Рассмотрим процесс настройки внутри самой программы 1С. В последних релизах БПО уже присутствует встроенный драйвер "1С:Эквайринговые терминалы Smart Sale". Проанализируем порядок действий в интерфейсе:
.so библиотеку из своего макета и зарегистрирует её в системе).Если автоматическая установка не срабатывает, нам придется воспользоваться ручным методом подгрузки компоненты. В коде 1С это выглядит примерно так:
Результат = ПодключитьВнешнююКомпоненту("ОбщийМакет.ДрайверИнпасLinux", "InpasNative", ТипВнешнейКомпоненты.Native);
Если Не Результат Тогда
Сообщить("Не удалось загрузить компоненту INPAS!");
КонецЕсли;
Разберем ситуацию с типом подключения. Если ваш терминал поддерживает работу по сети (Ethernet или Wi-Fi), мы настоятельно рекомендуем использовать именно этот способ в Linux. Это позволит избежать всех проблем с правами доступа к портам (udev) и зависимостями USB-драйверов. В настройках эквайринга в 1С укажите:
Проанализируем преимущества: при работе через IP-адрес драйвер взаимодействует напрямую с сетевым сокетом, что в Linux работает гораздо стабильнее, чем эмуляция COM-порта через USB.
Если штатные средства 1С и прямая загрузка Native API библиотеки вызывают непреодолимые ошибки (например, конфликт версий glibc), рассмотрим использование промежуточного ПО, такого как KKMServer. Это решение часто упоминается опытными администраторами как наиболее жизнеспособное в сложных условиях.
Логика работы следующая: в системе Linux устанавливается отдельный демон (сервис) KKMServer, который берет на себя всю низкоуровневую работу с терминалом. 1С же общается с KKMServer по протоколу HTTP с использованием JSON-запросов. Посмотрим, почему это удобно:
Подводя итог, можно сказать, что запуск эквайринга INPAS на Linux в 1С возможен, но требует внимания к деталям системного администрирования. Мы рекомендуем в первую очередь пробовать подключение через Ethernet. Если же вы ограничены USB-подключением, убедитесь в наличии libssl1.1 и правильно настроенных правилах udev. В случае критических проблем не пренебрегайте использованием платных шлюзов вроде KKMServer, так как это может сэкономить десятки часов рабочего времени программиста и системного администратора.