Часто при автоматизации розничной торговли возникает потребность подключить банковский терминал (например, Pax SP30 от Сбербанка) к программе 1С:Управление торговлей (УТ 10.3), которая работает на удаленном сервере через RDP. Ситуация классическая: при подключении терминала к локальному компьютеру и тестировании оплата проходит корректно. Но стоит только перенести папку с драйверами на сервер, настроить проброс COM-порта и попытаться пробить чек в 1С, как терминал выдает ошибку «Нет связи с банком», хотя сумма к оплате на экран устройства выводится. Проанализируем эту ситуацию и разберем по шагам, как добиться стабильной работы эквайринга в терминальной сессии. Для этой задачи в УТ 10.3 можно применить модифицированную обработку обслуживания терминала Сбербанка, в которой реализована возможность гибкого указания пути к необходимым библиотекам.
Для начала убедимся, что COM-порт, к которому физически подключен терминал, корректно передается в удаленную сессию. В настройках клиента RDP на вкладке «Локальные ресурсы» обязательно должна стоять галочка напротив пункта «Порты».
Рассмотрим, как проверить доступность порта непосредственно на сервере терминалов. Для этого откроем командную строку (cmd) в RDP-сессии и выполним команду:
change port /query
Эта команда покажет список всех активных COM-портов. Найдите в списке примапленный порт терминала. Затем попробуйте запустить опрос устройства (например, через утилиту Сбербанка) и снова выполните команду проверки. Если порт пропадает из списка, значит, связь нестабильна и COM-порт «отваливается» в процессе передачи данных.
Также обратим внимание на скорость порта. В диспетчере устройств на локальном ПК скорость часто по умолчанию равна 9600. Убедитесь, что в конфигурационном файле драйвера Сбербанка (pinpad.ini) на сервере установлена аналогичная скорость, а не завышенная (например, 115200), так как на высоких скоростях виртуальные порты в RDP могут терять пакеты.
Перейдем к настройке конфигурационного файла pinpad.ini, который находится в рабочей папке Сбербанка (обычно это C:\sc552). Откроем этот файл на сервере и проанализируем параметры.
Обязательно укажите примапленный COM-порт. Но кроме самого порта, при работе через RDP нам понадобятся дополнительные параметры, которые помогут стабилизировать связь драйвера с оборудованием:
Рассмотрим одну из самых неочевидных проблем, из-за которой терминалы Pax (и другие устройства Сбербанка) отказываются работать через RDP. Как показывает практика, последние версии пакета sc552 (UPOS) могут работать с проброшенными портами менее стабильно, чем их предшественники.
Если вы столкнулись с ошибкой связи, попробуйте использовать более старый вариант папки sc552, например, версии 33.00.10 или 33.17.03 (а иногда и версии ниже 31.00). Зачастую распаковка старой версии библиотеки решает проблему: драйвер начинает видеть банк, и терминал работает без сбоев. После успешного запуска на старой версии некоторые системные администраторы доустанавливают новую версию поверх старой, и конфигурация продолжает работать корректно.
Выясним причину внезапных отключений порта. Часто проблема кроется не в 1С и не в RDP, а в настройках энергосбережения локального компьютера.
На локальном ПК зайдите в Диспетчер устройств. Найдите USB-концентраторы и сам COM-порт терминала (он обычно эмулируется через USB-VCOM). В свойствах каждого из них перейдите на вкладку «Управление электропитанием» и снимите галочку с пункта «Разрешить отключение этого устройства для экономии энергии». Иначе Windows может приостановить питание порта, что мгновенно разрушит RDP-соединение терминала.
На стороне самого сервера (RDP-хоста) иногда требуется настройка реестра. В ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd можно добавить или изменить параметр FilterSendMessageTimeout, увеличив время ожидания отклика локального устройства.
Если стандартный механизм проброса портов RDP (через клиент Подключения к удаленному рабочему столу) работает нестабильно, существуют альтернативные программные решения. Рассмотрим популярные утилиты для проброса COM-портов по сети (через TCP/IP):
Если же сам терминал поддерживает работу по Ethernet, лучшим решением будет подключить его напрямую к локальной сети. В этом случае в pinpad.ini нужно будет прописать не COM-порт, а IP-адрес терминала (параметры HostIP и HostPort). Это навсегда избавит вас от проблем с RDP-пробросом. Для реализации стабильного сетевого взаимодействия также подойдёт веб-драйвер эквайринга Сбербанка для работы через сеть, обеспечивающий независимость от проброса портов в терминальной сессии.
Не пытайтесь сразу тестировать работу в 1С. Все проверки нужно проводить на сервере терминалов, используя утилиты, входящие в состав пакета Сбербанка. Запустите UPOS_Test или LoadParm.exe.
В утилите тестирования укажите рабочий каталог (например, C:\sc552) и примапленный COM-порт. Перейдите на закладку транзакций и попробуйте выполнить сверку итогов или тестовую оплату. Если утилита отрабатывает без ошибок (появляются сообщения вроде «Связь установлена»), то можно переходить к настройке торгового оборудования в 1С.
Напоследок проверим права доступа. Служба или пользователь терминальной сессии, под которым запущена 1С:УТ, должен иметь полные права на чтение и запись в директорию C:\sc552 (или ту папку, где лежат библиотеки sb_pilot.dll). В процессе работы драйвер создает временные файлы и логи, и отсутствие прав приведет к зависанию оплаты.
Выполнив все вышеописанные шаги — от правильного проброса порта и подбора рабочей версии библиотеки до настройки таймаутов — вы обеспечите надежную работу терминала эквайринга Pax SP30 с 1С через RDP без раздражающих обрывов связи с банком.