При работе в терминальном режиме (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-й версии драйверов.
Разберем по шагам процесс настройки:
ATOL Fiscal Printer Remote Server. Она будет автоматически запускаться при старте системы и транслировать ККТ, подключенную к USB/COM, в локальную сеть по порту 19524 (порт по умолчанию).10.8.0.5).10.8.0.5).При такой схеме драйвер 1С на сервере общается со службой на локальном ПК напрямую по быстрому протоколу TCP. Чек улетает на печать мгновенно (в течение 1–2 секунд), так как медленный механизм RDP-маппинга COM-портов полностью исключается из цепочки.
--- ### Способ 2. Прямое сетевое подключение ККТ по TCP/IP (через LAN или Wi-Fi)
Если используемая модель кассового аппарата АТОЛ (например, АТОЛ 22Ф, 25Ф, 55Ф) физически оснащена сетевым интерфейсом (разъемом Ethernet RJ-45 или модулем Wi-Fi), мы можем полностью исключить компьютер кассира из схемы обмена данными и подключить кассу к серверу напрямую.
Проанализируем этот вариант:
192.168.1.150) и порт 5555.192.168.1.150) и порт 5555.Этот способ является наиболее надежным и отказоустойчивым. Касса работает как независимое сетевое устройство. Даже если компьютер кассира перезагрузится, зависнет или будет выключен, сервер 1С сохранит прямую связь с ККТ, а скорость печати чеков будет максимальной.
--- ### Способ 3. Использование сторонних утилит для туннелирования COM-портов в TCP (без создания VPN)
Если у вас нет технической возможности поднять полноценный VPN-туннель между сервером и торговой точкой, можно прибегнуть к программному «заворачиванию» трафика COM-порта в TCP-соединение напрямую через интернет. Для этого используются специализированные утилиты-конвертеры.
Посмотрим на пример реализации с помощью бесплатной консольной утилиты com2tcp:
COM3).com2tcp \\.\COM3 9999
Здесь 9999 — произвольный свободный порт на локальном ПК, который теперь ожидает входящих подключений.9999 перенаправлялись на локальный IP-адрес компьютера кассира на тот же порт 9999. Для этого у торговой точки должен быть статический публичный 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), которая будет работать локально:
EthOverUsb (она устанавливается вместе с ДТО 10). В настройках службы укажите COM-порт кассы, выделенный под ОФД (при подключении по USB касса АТОЛ обычно создает два виртуальных COM-порта: один для управления ККТ, второй — для передачи данных в ОФД).Таким образом, локальная служба будет сама забирать чеки из ККТ и отправлять их в ОФД напрямую через локальный интернет кассира, полностью освободив удаленный сервер от этой фоновой работы.
--- ### Способ 6. Базовая оптимизация настроек подключения RDP-клиента
Если по каким-то причинам внедрение TCP/IP или VPN прямо сейчас невозможно, можно попытаться немного улучшить работу стандартного RDP-маппинга за счет изменения параметров быстродействия клиента удаленного рабочего стола:
mstsc).Такая принудительная настройка заставляет протокол RDP передавать данные портов с меньшей групповой задержкой и с максимальной частотой опроса, что может сократить время ожидания отклика ККТ на 20–30%, хотя и не решит проблему кардинально так, как это делает переход на полноценный TCP/IP.