Настройка торгового оборудования в гетерогенной ИТ-среде, где серверная часть работает на Debian Linux + PostgreSQL, а рабочие места пользователей распределены между тонкими клиентами на Linux, браузерными веб-клиентами и терминальными Windows-сессиями (RDP), представляет собой классическую и одновременно сложную задачу системного администрирования. В этой статье мы подробно разберем, как спроектировать стабильную архитектуру для печати чеков по 54-ФЗ и работы банковских платежных терминалов (эквайринга) во всех возможных сценариях.
Прежде чем приступать к закупке оборудования и установке драйверов, проанализируем имеющуюся схему работы. Мы имеем сервер 1С на Linux Debian и базу данных на PostgreSQL. Пользователи могут подключаться следующими способами:
1С:Предприятие под ОС Linux.Главная сложность здесь заключается в том, что торговое оборудование (физическая касса и пин-пад) физически подключены к локальному компьютеру пользователя, а логика проведения чека выполняется на удаленном сервере. Нам необходимо связать эти компоненты с минимальной задержкой и максимальной стабильностью, избегая постоянных зависаний «проброшенных» виртуальных COM-портов. Выясним, как это сделать по шагам.
---
Это один из самых чистых сценариев интеграции, так как здесь не используются промежуточные терминальные протоколы. Разберем его настройку подробнее.
Для работы с ККТ АТОЛ (например, популярными моделями АТОЛ 55Ф, АТОЛ 30Ф или АТОЛ 25Ф) необходимо полностью отказаться от устаревших драйверов 9.х серии и использовать современный кроссплатформенный драйвер АТОЛ ДТО 10.х.
Шаг 1. Установка драйверов ККТ в Linux.
АТОЛ предоставляет готовые .deb-пакеты для Debian/Ubuntu систем. Скачиваем актуальный дистрибутив ДТО 10. Крайне важно соблюдать правило разрядности: разрядность драйвера ККТ должна соответствовать разрядности установленного клиента 1С, а не разрядности операционной системы. Если у вас на 64-битной Linux установлен 32-битный тонкий клиент 1С, вам необходимо устанавливать именно 32-битный пакет драйвера.
Устанавливаем пакеты через терминал:
sudo dpkg -i fptr10-client-amd64.deb
sudo dpkg -i fptr10-common-amd64.deb
Шаг 2. Настройка прав доступа к COM-портам.
При подключении кассы по USB в системе Linux обычно создается виртуальный последовательный порт, например /dev/ttyACM0 или /dev/ttyUSB0. По умолчанию обычный пользователь не имеет прав на чтение и запись в эти устройства. Добавим пользователя в группу доступа (обычно это группа dialout):
sudo usermod -aG dialout $USER
После этого необходимо перезагрузить сессию пользователя или перезагрузить компьютер.
Шаг 3. Подключение в 1С.
В самой платформе 1С переходим в раздел «Подключаемое оборудование», добавляем новое устройство с типом «ККТ с передачей данных», выбираем драйвер «АТОЛ:ККТ с передачей данных в ОФД (10.Х)». В параметрах подключения указываем порт (например, /dev/ttyACM0) и скорость обмена (по умолчанию 115200).
---
Многие системные администраторы сталкиваются с проблемой, когда при попытке пробить чек из браузера под Linux система выдает ошибку: «Установка внешней компоненты не выполнена... Отсутствует компонента для используемого клиентского приложения». Это связано с ограничениями безопасности современных браузеров и отсутствием нативной поддержки некоторых библиотек.
Как решить эту проблему изящно и надежно? Нам поможет встроенный в ДТО 10 Web-сервер ККТ.
Разберем по шагам архитектуру этого решения:
16732.http://localhost:16732.Для настройки такой схемы в 1С в справочнике «Подключаемое оборудование» при создании карточки ККТ в поле «Способ подключения» мы выбираем не локальное подключение через компоненту, а указываем подключение через Web-сервер, прописав IP-адрес хоста и порт.
Пример JSON-задания, которое веб-сервер принимает и отрабатывает в фоновом режиме:
{
"uuid": "60e90c74-cf4e-4b47-b8f2-8f192b0c679a",
"request": [
{
"type": "sell",
"taxationType": "usnIncome",
"operator": {
"name": "Кассир Петров"
},
"items": [
{
"type": "position",
"name": "Консультационные услуги",
"price": 1500.00,
"quantity": 1.0,
"amount": 1500.00,
"department": 1,
"tax": {
"type": "none"
}
}
],
"payments": [
{
"type": "electronically",
"amount": 1500.00
}
]
}
]
}
Этот подход полностью избавляет нас от необходимости «бороться» с установкой браузерных плагинов и расширений в Linux-системах.
---
Это наиболее частый и одновременно самый нестабильный вариант работы при классической схеме проброса портов. Когда пользователь запускает Remmina или xfreerdp и подключается к Windows Server 2008/2012, его локальные COM-порты пробрасываются в сессию. Однако при малейшем шорохе в сети сессия переподключается, COM-порты «отваливаются», монопольный доступ блокируется, и касса намертво зависает в сессии 1С.
Рассмотрим два решения этой проблемы: классическое программное и современное сетевое.
Если кассовый аппарат не имеет физического Ethernet-порта, мы можем транслировать последовательный порт по сети с помощью связки специализированного ПО.
ser2net, который будет слушать определенный TCP-порт и перенаправлять все данные в физический COM-порт ККТ:
sudo apt-get install ser2net
/etc/ser2net.conf прописываем строку трансляции (для скорости 115200 и порта устройства /dev/ttyACM0):
7000:raw:0:/dev/ttyACM0:115200 8DATABITS NONE 1STOPBIT
COM5), который будет перенаправлять все данные на IP-адрес локального Linux-компьютера кассира на порт 7000.COM5.Такая схема гораздо стабильнее стандартного проброса RDP, так как сетевое TCP-соединение удерживается независимо от состояния сессии удаленного рабочего стола.
Рассмотрим самый надежный способ интеграции ККТ, который полностью исключает любые проблемы с пробросом портов. Для этого нам понадобится кассовый аппарат с поддержкой проводной сети Ethernet (LAN), например АТОЛ 55Ф или АТОЛ 25Ф.
Схема настройки выглядит следующим образом:
192.168.1.150).192.168.1.150.При такой конфигурации касса работает как самостоятельное сетевое устройство. Никакие обрывы RDP-сессий, зависания клиентов и особенности операционных систем на рабочих местах вообще не влияют на стабильность отправки чеков.
---
Интеграция банковских терминалов Сбербанка в связке с Linux и терминальным сервером традиционно вызывала много вопросов у администраторов из-за зависимости старого софта от Windows-библиотек (таких как sbrf.dll). Однако современные реалии предлагают полностью рабочие кроссплатформенные решения.
Рассмотрим, как настроить эквайринг Сбербанка наиболее стабильным образом.
Шаг 1. Переход на новый драйвер.
Используем официальный драйвер «1С:Эквайринговые терминалы Сбербанк 2.х». Он полностью кроссплатформенный и разработан для поддержки операционных систем семейства Linux. В основе его работы лежит использование консольной утилиты Сбербанка sb_pilot, которая поставляется как для Windows, так и для Linux.
Шаг 2. Выбор схемы взаимодействия.
xfreerdp мы пробрасываем этот порт на Windows-сервер терминалов:
xfreerdp /v:server_ip /u:user /p:pass /drive:usbshare,/media/usb /com:COM11=/dev/ttyUSB0
sb_pilot с привязкой к его проброшенному порту в файле pinpad.ini:
ComPort=11
Speed=115200
---
Проанализируем две популярные модели ККТ АТОЛ для нагруженных торговых точек:
Наш вердикт: для построения надежной сетевой структуры в гетерогенной сети отлично подходит АТОЛ 55Ф, подключенный по кабелю Ethernet напрямую к локальной сети торговой точки.
---
Подведем итог нашей совместной работы. Чтобы запустить торговое оборудование под Linux и RDP без лишней головной боли, придерживаемся следующих правил: