Как настроить торговое оборудование (ККТ 54-ФЗ и эквайринг) в 1С под Linux, в веб-клиенте и через Windows RDP?

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

Настройка торгового оборудования в гетерогенной ИТ-среде, где серверная часть работает на Debian Linux + PostgreSQL, а рабочие места пользователей распределены между тонкими клиентами на Linux, браузерными веб-клиентами и терминальными Windows-сессиями (RDP), представляет собой классическую и одновременно сложную задачу системного администрирования. В этой статье мы подробно разберем, как спроектировать стабильную архитектуру для печати чеков по 54-ФЗ и работы банковских платежных терминалов (эквайринга) во всех возможных сценариях.

Архитектурный анализ задачи

Прежде чем приступать к закупке оборудования и установке драйверов, проанализируем имеющуюся схему работы. Мы имеем сервер 1С на Linux Debian и базу данных на PostgreSQL. Пользователи могут подключаться следующими способами:

  1. Нативный тонкий клиент 1С:Предприятие под ОС Linux.
  2. Веб-клиент через интернет-браузер на Linux-ПК.
  3. RDP-подключение с Linux- и Windows-клиентов к терминальному серверу Windows Server, внутри которого запущен толстый или тонкий клиент.

Главная сложность здесь заключается в том, что торговое оборудование (физическая касса и пин-пад) физически подключены к локальному компьютеру пользователя, а логика проведения чека выполняется на удаленном сервере. Нам необходимо связать эти компоненты с минимальной задержкой и максимальной стабильностью, избегая постоянных зависаний «проброшенных» виртуальных COM-портов. Выясним, как это сделать по шагам.

---

Сценарий 1: ОС Linux, нативный тонкий клиент «1С»

Это один из самых чистых сценариев интеграции, так как здесь не используются промежуточные терминальные протоколы. Разберем его настройку подробнее.

Для работы с ККТ АТОЛ (например, популярными моделями АТОЛ 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).

---

Сценарий 2: ОС Linux, работа через WEB-клиент (в браузере)

Многие системные администраторы сталкиваются с проблемой, когда при попытке пробить чек из браузера под Linux система выдает ошибку: «Установка внешней компоненты не выполнена... Отсутствует компонента для используемого клиентского приложения». Это связано с ограничениями безопасности современных браузеров и отсутствием нативной поддержки некоторых библиотек.

Как решить эту проблему изящно и надежно? Нам поможет встроенный в ДТО 10 Web-сервер ККТ.

Разберем по шагам архитектуру этого решения:

  1. На локальном компьютере, к которому физически подключен кассовый аппарат, устанавливается локальный драйвер АТОЛ 10.
  2. Вместе с драйвером запускается системная служба ATOL Fiscal Printer Web-Server, которая по умолчанию слушает порт 16732.
  3. Браузер с запущенным веб-клиентом 1С взаимодействует с ККТ не напрямую через низкоуровневые порты, а отправляет обычные HTTP-запросы в формате JSON на адрес 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-системах.

---

Сценарий 3: ОС Linux, работа через RDP (Windows-терминал с Linux-клиентов)

Это наиболее частый и одновременно самый нестабильный вариант работы при классической схеме проброса портов. Когда пользователь запускает Remmina или xfreerdp и подключается к Windows Server 2008/2012, его локальные COM-порты пробрасываются в сессию. Однако при малейшем шорохе в сети сессия переподключается, COM-порты «отваливаются», монопольный доступ блокируется, и касса намертво зависает в сессии 1С.

Рассмотрим два решения этой проблемы: классическое программное и современное сетевое.

Вариант А. Программный проброс через утилиты ser2net и Tibbo

Если кассовый аппарат не имеет физического Ethernet-порта, мы можем транслировать последовательный порт по сети с помощью связки специализированного ПО.

  1. На локальном Linux-компьютере кассира устанавливаем демона ser2net, который будет слушать определенный TCP-порт и перенаправлять все данные в физический COM-порт ККТ: sudo apt-get install ser2net
  2. В конфигурационном файле /etc/ser2net.conf прописываем строку трансляции (для скорости 115200 и порта устройства /dev/ttyACM0): 7000:raw:0:/dev/ttyACM0:115200 8DATABITS NONE 1STOPBIT
  3. На удаленном Windows-сервере терминалов устанавливаем виртуальный COM-драйвер Tibbo Virtual Serial Port Manager. Он создаст в системе виртуальный порт (например, COM5), который будет перенаправлять все данные на IP-адрес локального Linux-компьютера кассира на порт 7000.
  4. В 1С, запущенной внутри RDP-сессии, настраиваем подключение ККТ на созданный виртуальный порт COM5.

Такая схема гораздо стабильнее стандартного проброса RDP, так как сетевое TCP-соединение удерживается независимо от состояния сессии удаленного рабочего стола.

Вариант Б. Сетевое подключение ККТ напрямую по IP (Рекомендуемый способ)

Рассмотрим самый надежный способ интеграции ККТ, который полностью исключает любые проблемы с пробросом портов. Для этого нам понадобится кассовый аппарат с поддержкой проводной сети Ethernet (LAN), например АТОЛ 55Ф или АТОЛ 25Ф.

Схема настройки выглядит следующим образом:

  1. Подключаем кассовый аппарат обычным патч-кордом к локальной сети торговой точки (роутеру).
  2. В настройках кассы (через тест драйвера) задаем статический IP-адрес в локальной подсети магазина (например, 192.168.1.150).
  3. Поскольку сервер 1С находится удаленно (или в другой сети), мы объединяем офисы и серверную площадку с помощью защищенного VPN-канала (например, OpenVPN). Таким образом, удаленный сервер 1С начинает напрямую «видеть» IP-адрес кассы 192.168.1.150.
  4. В настройках ККТ в 1С мы выбираем тип подключения: «TCP/IP» (а не COM-порт), указываем IP-адрес ККТ и порт обмена (по умолчанию 5555).

При такой конфигурации касса работает как самостоятельное сетевое устройство. Никакие обрывы RDP-сессий, зависания клиентов и особенности операционных систем на рабочих местах вообще не влияют на стабильность отправки чеков.

---

Сценарий 4: Подключение эквайринга Сбербанка (Linux, RDP)

Интеграция банковских терминалов Сбербанка в связке с Linux и терминальным сервером традиционно вызывала много вопросов у администраторов из-за зависимости старого софта от Windows-библиотек (таких как sbrf.dll). Однако современные реалии предлагают полностью рабочие кроссплатформенные решения.

Рассмотрим, как настроить эквайринг Сбербанка наиболее стабильным образом.

Шаг 1. Переход на новый драйвер.

Используем официальный драйвер «1С:Эквайринговые терминалы Сбербанк 2.х». Он полностью кроссплатформенный и разработан для поддержки операционных систем семейства Linux. В основе его работы лежит использование консольной утилиты Сбербанка sb_pilot, которая поставляется как для Windows, так и для Linux.

Шаг 2. Выбор схемы взаимодействия.

---

Какое оборудование выбрать: АТОЛ 55Ф или АТОЛ 25Ф?

Проанализируем две популярные модели ККТ АТОЛ для нагруженных торговых точек:

  1. АТОЛ 55Ф: Отличный, проверенный временем аппарат. Обладает высокой ремонтопригодностью, поддерживает как интерфейсы USB, так и полноценный Ethernet. Использует чековую ленту шириной 80 мм или 57 мм. Идеально подходит для средних и крупных магазинов с количеством чеков более 100-200 в день.
  2. АТОЛ 25Ф: Более новая модель с повышенной скоростью печати чека. Основное отличие — усиленный металлический каркас и еще более износостойкий автоотрезчик. По цене эта модель практически сопоставима со старшим братом, но в ремонте может оказаться чуть дороже из-за новизны некоторых комплектующих.

Наш вердикт: для построения надежной сетевой структуры в гетерогенной сети отлично подходит АТОЛ 55Ф, подключенный по кабелю Ethernet напрямую к локальной сети торговой точки.

---

Резюме и практические советы по пусконаладке

Подведем итог нашей совместной работы. Чтобы запустить торговое оборудование под Linux и RDP без лишней головной боли, придерживаемся следующих правил:

← На главную