Рассмотрим очень распространенную ситуацию, с которой сталкиваются многие системные администраторы и специалисты 1С, которым часто требуется удаленное подключение к другим компьютерам для настройки и обслуживания оборудования. У вас есть удаленная торговая точка, подключенная к центральному серверу через терминальный доступ. На точке стоит кассовый аппарат (ККТ), который проброшен на сервер через COM-порт. Все работало годами, но после плановой замены фискального накопителя (ФН) и обновления прошивки ККТ специалистом из ЦТО печать чеков превратилась в пытку, занимая от 5 до 10 минут.
Первая мысль — виноват медленный интернет или старый компьютер на точке. Однако тесты скорости показывают приемлемые цифры, а замена ПК, как показывает практика, кардинально ситуацию не меняет. Давайте вместе разберемся, в чем истинная причина проблемы и какие есть надежные способы ее решения.
Ключевое событие, которое вызвало проблему, — это обновление кассы на платформу 5.0 и переход на использование Драйверов Торгового Оборудования (ДТО) версии 10. Именно это изменение кардинально повлияло на способ обмена данными между 1С и кассой.
Изменение протокола обмена. Старые драйверы (например, ДТО8) работали по принципу "отправил и забыл". 1С формировала команду на печать, отправляла ее одним пакетом в COM-порт, и касса начинала печатать. Этот метод был не очень чувствителен к задержкам в сети (пингу).
Новый протокол, используемый в ДТО10 и платформе 5.0, является "диалоговым" или "чатти" (chatty). Теперь для печати чека система ведет активный диалог с кассой: отправляет небольшую порцию данных, ждет подтверждения, отправляет следующую, снова ждет подтверждения, и так десятки, а то и сотни раз за один чек. Это необходимо для корректной поддержки маркировки, внедрения разрешительного режима на кассах, новых форматов фискальных данных (ФФД) и более строгого контроля за состоянием ККТ.
Проблема проброса COM-порта через RDP. Технология перенаправления COM-портов в RDP не была рассчитана на такой интенсивный обмен мелкими пакетами. Каждый микро-запрос от сервера к кассе и ответ от нее проходят долгий путь: Сервер 1С -> RDP-канал -> Удаленный ПК -> Драйвер на удаленном ПК -> Физический COM/USB порт -> Касса. И затем ответ идет в обратном порядке. Задержка в сети (пинг), например, в 40 мс, умножается на огромное количество таких "диалоговых" пакетов, в результате чего миллисекунды превращаются в минуты.
"Раздувание" трафика. Как верно подметили на форуме, иногда драйвер на сервере формирует не просто текстовые команды, а графическое представление чека, которое затем пытается "протолкнуть" через RDP на удаленный принтер. В этом случае объем данных может вырасти с десятков килобайт до нескольких мегабайт, что дополнительно замедляет процесс на медленных каналах.
Итог: Проблема не в скорости интернета как таковой, а в сочетании высокой задержки (пинга) и нового "разговорчивого" протокола. Если вовремя не принять меры, могут возникнуть серьезные проблемы с чеками при закрытии месяца и повседневной торговле.
Чтобы решить проблему, нам нужно полностью отказаться от механизма проброса COM-порта средствами RDP и наладить прямое сетевое взаимодействие между 1С на сервере и кассой на удаленной точке. Рассмотрим три основных способа.
Это самый надежный и производительный метод. Он подходит, если ваша модель ККТ (например, АТОЛ 55Ф) имеет встроенный Ethernet-порт или если в нее можно установить дополнительный модуль связи (например, Wi-Fi модуль для АТОЛ 30Ф).
Шаг 1. Подключите кассу к локальной сети на удаленной точке (к роутеру) и настройте на ней статический IP-адрес, например, 192.168.1.123.
Шаг 2. Организуйте доступ к кассе с сервера. Есть два варианта:
VPN (Рекомендуемый и безопасный способ). Настройте VPN-туннель между вашим сервером (или всей серверной сетью) и роутером на удаленной точке. После установки VPN-соединения ваш сервер будет "видеть" кассу так, как будто она находится в одной с ним локальной сети. Это самый стабильный и защищенный вариант.
Проброс портов (Port Forwarding). Если на удаленной точке есть статический "белый" IP-адрес, можно настроить на роутере правило проброса портов. Если же у вас нет выделенного адреса, можно реализовать организацию удаленного доступа RDP на сервер без выделенного IP через специальные сервисы, чтобы обеспечить связность. Вы перенаправляете запросы, приходящие на внешний порт (стандартный для АТОЛ — 5555), на внутренний IP-адрес кассы (192.168.1.123:5555). Важно: этот метод требует осторожности с точки зрения безопасности.
Шаг 3. Настройте драйвер на сервере. В настройках торгового оборудования для вашей кассы измените тип подключения с COM на TCP/IP. В качестве адреса укажите IP-адрес, по которому касса доступна с сервера, и порт (5555).
Этот способ идеален, если ваша касса подключена к удаленному компьютеру по USB и не имеет сетевых интерфейсов. В составе ДТО10 есть специальная утилита, которая превращает локальную USB-кассу в сетевую.
Проанализируем по шагам, как это настроить:
На удаленном ПК (к которому подключена касса):
6220.На терминальном сервере (где запущена 1С):
TCP/IP.6220).Теперь обмен данными будет идти напрямую по сети, минуя "бутылочное горлышко" в виде проброса COM-порта через RDP. Скорость печати вернется к нормальным значениям.
Если по каким-то причинам фирменная утилита от АТОЛ не работает, существуют аналогичные программы от сторонних разработчиков. Они работают по тому же принципу: на удаленном компьютере запускается программа-сервер, которая "захватывает" физический COM-порт и предоставляет к нему доступ по сети. На терминальном сервере настраивается виртуальный COM-порт, который подключается к этому TCP-серверу.
Вне зависимости от выбранного сетевого метода, главный вывод остается неизменным: для стабильной и быстрой работы современных ККТ в удаленных сценариях необходимо полностью исключить проброс COM-портов через RDP и перейти на прямое сетевое взаимодействие.