Как настроить торговое оборудование по 54-ФЗ для 1С в связке Linux, Windows RDP и веб-клиента

Системный администратор 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация Управленческий учет Торговля и дистрибуция
← На главную

Настройка торгового оборудования в гетерогенных сетях, где серверная часть работает на Linux, рабочие места пользователей функционируют на Linux и Windows, а подключение к 1С происходит через терминальные RDP-сессии или веб-клиент, всегда сопряжена с техническими трудностями. В этой статье мы подробно разберем, как правильно спроектировать архитектуру подключения ККТ (контрольно-кассовой техники), какое оборудование выбрать, и как решить проблему совместимости драйверов в различных режимах работы 1С.

Выбор оборудования: почему АТОЛ 30Ф уступает моделям 55Ф и 25Ф в терминальных средах

При организации рабочих мест кассиров в терминальном режиме (RDP) критически важным фактором является физический интерфейс подключения кассового аппарата. Рассмотрим три популярные модели АТОЛ:

  1. АТОЛ 30Ф. Это бюджетное решение, оснащенное только USB-портом. Подключение этого аппарата в RDP-сессии потребует виртуализации COM-порта и его последующего проброса через RDP-клиент. На практике такая схема работает крайне нестабильно: пакеты данных теряются, возникают ошибки таймаута связи, а печать одного чека может занимать до 30 секунд. Использовать АТОЛ 30Ф в терминальной среде настоятельно не рекомендуется.
  2. АТОЛ 55Ф. Оптимальный выбор для средних нагрузок. Главное преимущество модели — наличие полноценного Ethernet (LAN) порта. Это позволяет кассе работать как самостоятельному сетевому устройству. Аппарат получает собственный IP-адрес в локальной сети, а терминальный сервер 1С отправляет команды на печать напрямую по протоколу TCP/IP в обход нестабильных каналов RDP. Модель оснащена надежным автоотрезчиком и использует стандартную ленту шириной 57 мм.
  3. АТОЛ 25Ф. Премиальное решение, также оснащенное Ethernet-портом. Отличается от 55Ф поддержкой широкой чековой ленты (80 мм), более высокой скоростью печати и увеличенным ресурсом термоголовки и ножа автоотрезчика. Данную модель целесообразно выбирать для точек с высокой интенсивностью продаж.

Для стабильной работы в связке с Linux и Windows RDP мы рекомендуем использовать подключение через сетевой кабель (LAN). Беспроводные модули Wi-Fi на практике часто теряют связь в условиях зашумленного эфира торговых залов, поэтому классический медный кабель остается наиболее надежным решением.

Сценарий 1: Настройка ККТ на Linux-клиенте с нативным тонким клиентом 1С

Рассмотрим по шагам, как настроить кассовый аппарат АТОЛ на рабочем месте под управлением ОС Linux (например, Ubuntu, Debian или Mint) при использовании тонкого клиента 1С.

Шаг 1. Установка драйверов ДТО 10.

Для работы современных конфигураций 1С (включая "1С:Комплексная автоматизация 2") необходимо использовать актуальную 10-ю версию драйверов торгового оборудования АТОЛ. Скачайте дистрибутив ДТО 10 для Linux с официального сайта центра загрузок АТОЛ.

В зависимости от вашего дистрибутива Linux установите DEB- или RPM-пакеты. Внимание: разрядность устанавливаемого драйвера должна строго соответствовать разрядности установленной платформы 1С, а не разрядности операционной системы! Если у вас установлена 32-битная версия тонкого клиента 1С на 64-битной Linux, вам необходимо установить 32-битный драйвер АТОЛ.

Пример установки DEB-пакетов для 64-битной системы:


sudo dpkg -i fptr10-client-10.x.x-amd64.deb
sudo dpkg -i fptr10-libs-10.x.x-amd64.deb

Шаг 2. Настройка прав доступа к портам (udev).

По умолчанию обычные пользователи в Linux не имеют прав на запись в порты USB-to-COM (например, /dev/ttyACM0). Если касса подключена по USB, 1С не сможет инициализировать устройство без административных прав. Для решения этой проблемы добавьте пользователя в группу dialout:

sudo usermod -aG dialout $USER

После выполнения команды необходимо перезагрузить сессию пользователя (выйти из системы и зайти заново).

Альтернативный и более правильный вариант — создание правила для службы udev, которое автоматически будет выдавать нужные права на устройство при его подключении. Создадим файл правила:

sudo nano /etc/udev/rules.d/99-atol.rules

Запишем в него следующую строку:

SUBSYSTEM=="tty", ATTRS{idVendor}="2912", MODE="0666"

Перезапустим службу udev для применения изменений:


sudo udevadm control --reload-rules
sudo udevadm trigger

Сценарий 2: Работа через RDP (Linux-клиент -> Терминал Windows Server)

Это классическая схема, при которой 1С запущена на сервере Windows в режиме толстого или тонкого клиента, а пользователи подключаются с рабочих мест под управлением Linux через RDP-клиенты (Remmina, FreeRDP).

Вариант А: Подключение ККТ по LAN (Рекомендуемый).

В этом случае физического проброса портов не требуется. Настройка выполняется следующим образом:

  1. Подключите ККТ АТОЛ 55Ф/25Ф к локальной сети предприятия.
  2. С помощью утилиты "Тест драйвера ККТ" задайте аппарату статический IP-адрес, маску подсети и шлюз. Порт по умолчанию — 5555.
  3. В терминальной сессии Windows запустите 1С, перейдите в меню "Подключаемое оборудование", добавьте новую ККТ и в параметрах подключения выберите тип соединения "TCP/IP".
  4. Укажите IP-адрес кассы и порт 5555. Проверьте связь. При такой схеме отправка чеков будет происходить мгновенно.

Вариант Б: Подключение ККТ по USB (Проброс портов).

Если используется касса без сетевого интерфейса (например, АТОЛ 30Ф), вам придется настраивать проброс последовательного порта через RDP. При использовании клиента FreeRDP команда запуска подключения будет выглядеть так:

xfreerdp /v:192.168.1.100 /u:username /p:password /port:COM1,/dev/ttyACM0

В настройках 1С на терминальном сервере в качестве порта ККТ необходимо будет указать виртуальный порт COM1. Будьте готовы к периодическим зависаниям службы печати из-за нестабильности RDP-канала.

Сценарий 3: Настройка веб-клиента 1С под Windows и Linux

При попытке завести ККТ АТОЛ через стандартный веб-клиент 1С (в браузере Chrome или Firefox) пользователи часто сталкиваются с ошибкой: программа "не видит" установленный драйвер ККТ. Выясним причину этой проблемы.

Согласно официальной документации фирмы 1С и паспорту интеграционной компоненты АТОЛ 10.х, **тип клиента "Веб-клиент" не поддерживается напрямую встроенной компонентой БПО** (Библиотеки подключаемого оборудования). Драйвер АТОЛ написан на C++ и скомпилирован под операционные системы Windows/Linux, он физически не может быть выполнен внутри песочницы интернет-браузера.

Для реализации печати чеков из веб-клиента 1С существуют три альтернативных пути решения.

Решение 1. Переход на Тонкий клиент 1С.

Тонкий клиент работает через веб-протоколы (HTTP/HTTPS) так же быстро, как и браузер, но при этом представляет собой полноценное десктопное приложение. В тонком клиенте БПО имеет полный доступ к локальной файловой системе и портам ввода-вывода, что позволяет без проблем использовать стандартный драйвер АТОЛ 10.х.

Решение 2. Использование локального веб-сервера печати (ККМ-Сервер).

Это специализированное программное обеспечение, которое устанавливается локально на компьютер, к которому подключена касса. ККМ-Сервер создает локальный веб-сервис и слушает определенный порт. Для браузера устанавливается специальное расширение.

В этом случае интеграция происходит следующим образом: веб-клиент 1С отправляет HTTP-запрос с данными чека в формате JSON на локальный адрес компьютера, ККМ-Сервер принимает запрос и передает его на кассу через стандартный драйвер. Эта схема работает как в Windows, так и в Linux.

Решение 3. Прямое взаимодействие через АТОЛ Web-server (WebRequests).

Начиная с ДТО 10, компания АТОЛ поставляет в комплекте собственную службу веб-сервера. Вы можете запустить эту службу на локальном ПК с кассой. Веб-клиент 1С сможет отправлять JSON-запросы напрямую на кассу, минуя механизмы БПО 1С. Посмотрим на пример реализации отправки запроса на печать чека из кода 1С:


&НаКлиенте
Процедура НапечататьЧекЧерезWebAPI(ДанныеЧекаJSON)
    
    // Адрес локального веб-сервера АТОЛ
    АдресСервера = "http://localhost:16732/api/v1/tasks";
    
    HTTPЗапрос = Новый HTTPЗапрос;
    HTTPЗапрос.АдресРесурса = "/api/v1/tasks";
    HTTPЗапрос.УстановитьТелоИзСтроки(ДанныеЧекаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
    
    Соединение = Новый HTTPСоединение("localhost", 16732);
    
    Попытка
        HTTPОтвет = Соединение.ОтправитьДляОбработки(HTTPЗапрос);
        Если HTTPОтвет.КодСостояния = 201 Тогда
            // Чек успешно отправлен в очередь печати ККТ
            ИдентификаторЗадачи = HTTPОтвет.ПолучитьТелоКакСтроку();
            ПоказатьПредупреждение(, "Чек успешно отправлен на печать. ID: " + ИдентификаторЗадачи);
        Иначе
            ВызватьИсключение "Ошибка ККТ: " + HTTPОтвет.ПолучитьТелоКакСтроку();
        КонецЕсли;
    Исключение
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю("Не удалось связаться с кассой: " + ОписаниеОшибки());
    КонецПопытки;
    
КонецПроцедуры

Использование прямого HTTP-взаимодействия позволяет полностью обойти ограничения веб-клиента и БПО, обеспечивая стабильную работу в любом современном браузере на любой операционной системе.

Отказ от устаревшего ДТО 9 и переход на ДТО 10

В старых конфигурациях 1С часто использовался драйвер АТОЛ версии 9.х. Настоятельно рекомендуем отказаться от него. Ветка ДТО 9 полностью снята с поддержки. Современные требования законодательства, такие как маркировка товаров ("Честный Знак") и формат фискальных данных ФФД 1.2, корректно работают только на базе ДТО 10.х.

Если в вашей старой конфигурации "1С:Комплексная автоматизация" в списке выбора торгового оборудования отсутствует ДТО 10, это явный сигнал о необходимости обновления конфигурации до актуального релиза. В крайнем случае потребуется обновить только саму Библиотеку подключаемого оборудования (БПО) путем интеграции новых макетов драйверов в конфигурацию.

Особенности настройки банковских терминалов (эквайринга) в Linux и RDP

Подключение пин-падов для приема оплаты картами в среде Linux и RDP имеет схожие проблемы. Большинство банковских утилит (например, sb_pilot от Сбербанка или драйверы INPAS) поставляются в виде бинарных библиотек. При работе в Linux они также требуют настройки прав доступа к USB-портам терминала.

Для терминальных RDP-серверов лучшим решением является использование эквайринговых терминалов, работающих по протоколу TCP/IP (Smart-терминалы). В этом случае пин-пад подключается к локальной сети организации, получает свой IP-адрес, а драйвер эквайринга в 1С на сервере Windows обращается к нему напрямую по сети. Это исключает необходимость проброса COM-портов банковского оборудования через RDP и гарантирует стабильный прием безналичных платежей.

← На главную