Как устранить задержки и ускорить печать чеков на кассе АТОЛ через RDP?

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

При работе в терминальном режиме (RDP), когда база данных 1С (например, «Альфа-Авто», «Управление торговлей» или «Розница») находится на удаленном сервере в облаке или в офисе, а кассовый аппарат АТОЛ физически подключен к локальному компьютеру кассира, пользователи часто сталкиваются с крайне медленной печатью чеков. Время между нажатием кнопки «Пробить чек» и началом физической печати на ККТ может составлять от 15 до 40 секунд. В условиях потока клиентов на кассе такая задержка недопустима.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем технические нюансы обмена данными и рассмотрим эффективные практические способы ускорения печати чеков на кассах АТОЛ в терминальном окружении.

--- ### Выясняем причину: почему проброс COM-портов работает медленно?

Стандартный и самый очевидный способ подключения кассы в RDP — это перенаправление (маппинг) локальных COM-портов в терминальную сессию. Однако именно этот механизм и является главным источником задержек.

Дело в том, что драйвер ККТ АТОЛ (особенно ДТО 10) использует сложный протокол обмена данными с большим количеством мелких запросов и ответов (так называемый «пинг-понг»). Для выполнения простейшей операции драйвер отправляет кассе сотни коротких команд для проверки состояния устройства: открыта ли крышка, есть ли бумага, готова ли касса к работе, нет ли ошибок в фискальном накопителе и так далее. При локальном подключении ККТ по USB эти сотни транзакций проходят за доли секунды.

Но когда мы пробрасываем COM-порт через интернет по протоколу RDP, каждый мелкий запрос вынужден проходить весь сетевой маршрут от сервера 1С до локального компьютера и обратно. Если пинг до сервера составляет хотя бы 40–50 миллисекунд, то из-за сотен последовательных сетевых пакетов суммарное время ожидания ответа вырастает до десятков секунд. Таким образом, даже стабильный интернет-канал с высокой пропускной способностью, но с небольшим пингом, становится узким горлышком из-за специфики обмена драйвера АТОЛ.

Рассмотрим подробнее рабочие варианты решения этой проблемы, которые позволяют полностью отказаться от медленного RDP-перенаправления портов в пользу сетевого протокола TCP/IP.

--- ### Способ 1. Использование встроенного Сервера удаленного подключения ККТ (ATOL RPC Server)

Начиная с версии ДТО 10.8.0.0, компания АТОЛ добавила в дистрибутив штатный механизм трансляции локальной кассы в сеть по протоколу TCP/IP. Это современная альтернатива старой службе fdsvc, которая использовалась в 8-й версии драйверов.

Разберем по шагам процесс настройки:

  1. На локальном компьютере кассира (к которому физически подключена касса по USB) запустите установку актуальной версии ДТО 10. В списке устанавливаемых компонентов обязательно отметьте галочкой пункт «Сервер удаленного подключения ККТ».
  2. После установки в операционной системе Windows появится новая служба ATOL Fiscal Printer Remote Server. Она будет автоматически запускаться при старте системы и транслировать ККТ, подключенную к USB/COM, в локальную сеть по порту 19524 (порт по умолчанию).
  3. Убедитесь, что брандмауэр Windows или сторонний антивирус на локальном ПК не блокирует входящие подключения по порту 19524.
  4. Настройте сетевой доступ. Чтобы терминальный сервер 1С мог «увидеть» локальный компьютер кассира, между ними должен быть настроен VPN-туннель (например, по протоколам WireGuard, L2TP или SSTP). Локальный компьютер кассира должен иметь статический IP-адрес внутри этой VPN-сети (например, 10.8.0.5).
  5. На терминальном сервере в базе 1С перейдите в настройки торгового оборудования. В параметрах подключения кассы АТОЛ укажите:
    • Способ подключения: TCP/IP (или Сетевое подключение).
    • IP-адрес: укажите VPN-адрес локального ПК кассира (например, 10.8.0.5).
    • Порт: 19524.

При такой схеме драйвер 1С на сервере общается со службой на локальном ПК напрямую по быстрому протоколу TCP. Чек улетает на печать мгновенно (в течение 1–2 секунд), так как медленный механизм RDP-маппинга COM-портов полностью исключается из цепочки.

--- ### Способ 2. Прямое сетевое подключение ККТ по TCP/IP (через LAN или Wi-Fi)

Если используемая модель кассового аппарата АТОЛ (например, АТОЛ 22Ф, 25Ф, 55Ф) физически оснащена сетевым интерфейсом (разъемом Ethernet RJ-45 или модулем Wi-Fi), мы можем полностью исключить компьютер кассира из схемы обмена данными и подключить кассу к серверу напрямую.

Проанализируем этот вариант:

  1. Подключите кассу АТОЛ сетевым кабелем к локальному роутеру на торговой точке.
  2. Через локальную утилиту «Тест драйвера ККТ» настройте статический IP-адрес для ККТ в локальной сети торговой точки (например, 192.168.1.150) и порт 5555.
  3. Организуйте постоянный VPN-канал между роутером торговой точки и вашим терминальным сервером. Оптимально использовать аппаратное решение (например, роутеры MikroTik с обеих сторон с настроенным туннелем IPSec или WireGuard), чтобы вся локальная подсеть магазина была прозрачно видна на сервере RDP.
  4. В настройках торгового оборудования 1С на сервере выберите тип подключения ККТ «TCP/IP», укажите IP-адрес кассы (192.168.1.150) и порт 5555.

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

--- ### Способ 3. Использование сторонних утилит для туннелирования COM-портов в TCP (без создания VPN)

Если у вас нет технической возможности поднять полноценный VPN-туннель между сервером и торговой точкой, можно прибегнуть к программному «заворачиванию» трафика COM-порта в TCP-соединение напрямую через интернет. Для этого используются специализированные утилиты-конвертеры.

Посмотрим на пример реализации с помощью бесплатной консольной утилиты com2tcp:

  1. На локальном компьютере с подключенной кассой определите номер физического (или эмулируемого USB) COM-порта ККТ (допустим, это COM3).
  2. Запустите утилиту командой, которая создаст TCP-сервер и свяжет его с портом кассы: com2tcp \\.\COM3 9999 Здесь 9999 — произвольный свободный порт на локальном ПК, который теперь ожидает входящих подключений.
  3. На роутере торговой точки настройте проброс портов (Port Forwarding), чтобы внешние запросы на внешний IP-адрес точки по порту 9999 перенаправлялись на локальный IP-адрес компьютера кассира на тот же порт 9999. Для этого у торговой точки должен быть статический публичный IP-адрес от провайдера.
  4. На терминальном сервере в настройках 1С укажите тип подключения ККТ «TCP/IP», в качестве IP-адреса введите внешний статический IP-адрес торговой точки, а в качестве порта — 9999.

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

--- ### Способ 4. Использование программного решения класса «Сервер ККМ»

Еще один продвинутый и очень гибкий вариант — установка на локальном ПК кассира стороннего программного обеспечения (например, утилиты kkmserver или аналогичных решений класса «Сервер ККМ»).

Как работает данная схема:

Программа устанавливается локально на компьютер, к которому физически подключена касса. Она берёт на себя все низкоуровневые операции взаимодействия с драйвером АТОЛ по USB на высокой локальной скорости. Наружу (в сеть) эта программа предоставляет легкий и быстрый HTTP-интерфейс (JSON API).

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

--- ### Способ 5. Оптимизация каналов передачи данных в ОФД (EoU vs EoT)

Часто медленная работа касс АТОЛ через RDP усугубляется некорректной настройкой отправки чеков в ОФД. В ККТ АТОЛ на Платформе 5.0 по умолчанию задействован механизм EoT (Ethernet over Transport). При этом режиме именно драйвер на стороне сервера пытается постоянно запрашивать у ККТ информацию о неотправленных чеках и передавать их в ОФД через тот же самый медленный проброшенный RDP-порт.

Чтобы разгрузить канал управления ККТ, рекомендуется перевести отправку данных в ОФД на службу EoU (Ethernet over USB), которая будет работать локально:

  1. В «Тесте драйвера ККТ» на локальном ПК зайдите в свойства подключения и переключите канал обмена с ОФД на EoU.
  2. Убедитесь, что на локальном ПК запущена служба EthOverUsb (она устанавливается вместе с ДТО 10). В настройках службы укажите COM-порт кассы, выделенный под ОФД (при подключении по USB касса АТОЛ обычно создает два виртуальных COM-порта: один для управления ККТ, второй — для передачи данных в ОФД).

Таким образом, локальная служба будет сама забирать чеки из ККТ и отправлять их в ОФД напрямую через локальный интернет кассира, полностью освободив удаленный сервер от этой фоновой работы.

--- ### Способ 6. Базовая оптимизация настроек подключения RDP-клиента

Если по каким-то причинам внедрение TCP/IP или VPN прямо сейчас невозможно, можно попытаться немного улучшить работу стандартного RDP-маппинга за счет изменения параметров быстродействия клиента удаленного рабочего стола:

  1. Перед запуском RDP-подключения откройте окно параметров (команда mstsc).
  2. Перейдите на вкладку «Взаимодействие» (Experience).
  3. В выпадающем списке выбора скорости подключения вместо автоматического определения принудительно выберите максимальный профиль: «Локальная сеть (10 Мбит/с или выше)».
  4. Убедитесь, что отмечена галочка «Кэширование растровых изображений».

Такая принудительная настройка заставляет протокол RDP передавать данные портов с меньшей групповой задержкой и с максимальной частотой опроса, что может сократить время ожидания отклика ККТ на 20–30%, хотя и не решит проблему кардинально так, как это делает переход на полноценный TCP/IP.

← На главную