Как подключить фискальный регистратор к 1С:УПП при работе в терминальном режиме RDP?

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

При переходе на требования 54-ФЗ в конфигурациях на обычных формах (например, 1С:Управление производственным предприятием 1.3) типовой сценарий взаимодействия с торговым оборудованием нередко усложняется серверной архитектурой. Классическая схема работы предполагает, что база 1С развернута на удаленном сервере и пользователи подключаются к ней через терминальную сессию (RDP), в то время как фискальный регистратор физически установлен на рабочем месте кассира под управлением локальной операционной системы (например, Windows 7 x64).

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

Сравнение архитектурных подходов: RDP-проброс против сетевого подключения

Рассмотрим подробнее два основных метода подключения контрольно-кассовой техники к удаленному терминальному серверу:

  1. Проброс локального COM-порта через клиент удаленного рабочего стола. При физическом подключении аппарата к компьютеру по интерфейсу USB драйвер устройства создает в системе два виртуальных COM-порта: один используется для управления печатью из учетной системы, второй — для передачи фискальных данных оператору (ОФД). При попытке пробросить такие порты в терминальную сессию регулярно возникают задержки пакетов, обрывы связи и плавающие изменения номеров портов при переподключении. В случае небольших сетевых лагов чек может фактически пробиться на фискальном накопителе, но программа 1С не успеет вовремя получить ответ и вернет ошибку тайм-аута, что приведет к расхождению данных.
  2. Прямое сетевое подключение фискального регистратора по протоколу TCP/IP. Модели фискальных регистраторов среднего и старшего класса (например, линейка АТОЛ FPrint-22ПТК) штатно оборудованы Ethernet-разъемом. Если между удаленным сервером и локальной кассой настроен прозрачный сетевой маршрут (статическая маршрутизация, корпоративный VPN-туннель), терминальная сессия 1С обращается к кассе напрямую по ее сетевому IP-адресу, минуя механизмы перенаправления портов RDP. Это обеспечивает максимальную стабильность обмена и высокую скорость печати.

Для небольшого объема операций (10–20 чеков в день) также допустимо использовать более бюджетные модели (например, АТОЛ 30Ф), однако при наличии физического интерфейса Ethernet использование TCP/IP всегда предпочтительнее классического проброса через RDP.

Включение протокола TCP/IP в обработке обслуживания 1С

Проанализируем распространенную проблему: касса подключена в локальную сеть, физически доступна по IP-адресу, но в стандартной форме настройки торгового оборудования в 1С:УПП 1.3 в выпадающем списке доступных каналов связи присутствует только UDP/IP или стандартные COM-порты, а нужный протокол TCP/IP отсутствует.

Выясним причину такого поведения. Список поддерживаемых интерфейсов формируется на основе XML-манифеста, который возвращает внешняя компонента драйвера торгового оборудования при инициализации параметров. В ряде релизов драйверов АТОЛ протокол TCP/IP скрыт из интерфейса настройки по умолчанию. Чтобы принудительно добавить возможность выбора подключения по TCP/IP, выполним корректировку в коде обработки обслуживания торгового оборудования.

Найдем в коде обработки процедуру получения настроек драйвера и добавим замену возвращаемой XML-строки:


// В обработке обслуживания кассы выполняем подмену доступных протоколов связи:
ДанныеИзДрайвера = СтрЗаменить(ДанныеИзДрайвера, 
    "<Item Value=""110"">UDP/IP</Item>", 
    "<Item Value=""110"">UDP/IP</Item><Item Value=""99"">TCP/IP</Item>");

После внесения этого изменения в параметрах торгового оборудования в интерфейсе 1С появится пункт TCP/IP с системным идентификатором 99. Далее остается указать сетевой IP-адрес аппарата и порт обмена (по умолчанию для драйверов торгового оборудования АТОЛ используется порт 5555), после чего выполнить тест устройства.

Особенности установки драйверов и служб на клиентском ПК с Windows 7

Если для конкретного аппарата все же выбран вариант подключения через локальный ПК по USB, разберем ключевые технические нюансы, с которыми предстоит столкнуться на операционной системе Windows 7 x64:

  1. Поддержка алгоритмов цифровой подписи SHA-2. Современные версии виртуальных COM-портов (драйверы VCP) от производителей кассовой техники подписаны сертификатами безопасности на базе алгоритма SHA-2. В чистой Windows 7 x64 это вызывает блокировку драйвера операционной системой с кодом ошибки 52. Для корректной работы обязательно требуется установить официальные пакеты обновлений безопасности ОС (в частности, KB4474419 и KB4490628).
  2. Разделение функций передачи данных. При формировании двух виртуальных портов через протокол USB служба передачи данных в ОФД (EthernetOverUSB / EoU) должна функционировать исключительно на локальном компьютере. Ее категорически нельзя запускать внутри терминальной сессии на сервере. В RDP-клиенте на удаленный сервер передается только порт управления, а порт передачи данных обслуживается локальной службой операционной системы.
  3. Разрядность платформы 1С:Предприятие. Даже если терминальный сервер работает под управлением 64-битной Windows Server, клиентская платформа 1С:УПП 1.3 в подавляющем большинстве случаев установлена как 32-разрядное приложение (x86). Версия драйвера торгового оборудования (ДТО) и библиотеки внешней компоненты должна строго соответствовать разрядности установленной платформы 1С (x86), а не разрядности серверной операционной системы.

Многопользовательский доступ и предотвращение блокировок

Важно помнить: фискальный регистратор является устройством монопольного доступа. При подключении кассы напрямую по TCP/IP из нескольких независимых терминальных сессий RDP отправка одновременных команд приведет к ошибке «Устройство занято» или «Порт недоступен» со стороны драйвера.

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

← На главную