Как решить проблему недоступности COM-порта ККТ Штрих-М 01Ф при работе через RDP?

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

При работе в терминальном режиме (RDP) системные администраторы и разработчики часто сталкиваются с парадоксальной ситуацией: проброшенный COM-порт клиента успешно проходит проверку в «Тесте драйвера ФР», команда change port в консоли сервера подтверждает наличие порта, но при попытке подключения из 1С возникает ошибка «Порт недоступен». Разберем детально, почему это происходит и какие существуют надежные способы решения этой задачи, помимо стандартного проброса портов.

Метод 1: Переход на сетевое подключение через RNDIS (Рекомендуемый способ)

Проброс последовательных портов через протокол RDP исторически считается нестабильным механизмом, особенно при работе через интернет. Самым надежным решением для современных касс Штрих-М является использование режима RNDIS. В этом режиме касса подключается к компьютеру по USB, но распознается системой как сетевой адаптер (Ethernet-over-USB).

Рассмотрим по шагам, как настроить такую схему:

  1. Настройка ККТ: Через «Тест драйвера» зайдем в «Таблицы». Найдем таблицу №21 (Сетевые интерфейсы) и в поле 9 установим значение для включения RNDIS.
  2. Настройка на стороне клиента: После включения RNDIS в системе появится новое сетевое подключение. В его свойствах необходимо задать статический IP-адрес (например, 192.168.137.1). Сама касса по умолчанию будет доступна по адресу 192.168.137.111.
  3. Проброс через сеть: Если сервер 1С находится в локальной сети, достаточно настроить маршрутизацию. Если подключение идет через интернет, оптимальным решением будет поднятие VPN-канала (например, OpenVPN или WireGuard) между клиентом и сервером. Как было отмечено в обсуждении, достаточно иметь статический IP-адрес только на сервере, чтобы он выступал в роли VPN-шлюза.
  4. Настройка в 1С: В параметрах подключаемого оборудования вместо «COM-порт» выберем тип подключения «TCP сокет». Укажем IP-адрес кассы (внутренний адрес в VPN-сети или адрес, доступный через маршрутизатор).

Метод 2: Использование специализированного ПО для проброса USB (USB Redirector)

Если сетевое подключение по каким-то причинам невозможно, проанализируем вариант с использованием сторонних утилит, таких как USB Redirector. Стандартный механизм RDP «виртуализирует» COM-порт, что часто приводит к конфликтам прав доступа в 1С. Специализированное ПО позволяет пробросить USB-устройство целиком на уровне драйвера шины.

Разберем преимущества этого подхода:

Метод 3: Проверка разрядности платформы и регистрации драйверов

Часто проблема кроется в несоответствии разрядности (x86 или x64) клиента 1С и используемых библиотек драйвера ККТ. Проанализируем ситуацию пользователя: на 64-битной Windows 7 используется 32-битный клиент 1С. Это правильное решение для старых версий драйверов Штрих-М, но оно требует нюансов в настройке.

Убедимся, что компоненты зарегистрированы корректно:

  1. Библиотека драйвера DrvFR.dll должна быть зарегистрирована в системе. Проверим, что используется версия из папки Program Files (x86).
  2. Запустим регистрацию вручную через командную строку от имени администратора: regsvr32 "C:\Program Files (x86)\Shtrih-M\DriversFR_4.14\Bin\DrvFR.dll"
  3. В настройках 1С при выборе драйвера «Штрих-М: ККТ с передачей данных в ОФД 2.2» убедимся, что версия установленного в системе драйвера совпадает с версией, которую ожидает конфигурация.

Метод 4: Тонкая настройка COM-портов в реестре и параметрах 1С

Иногда 1С не может «занять» порт, так как он помечен в системе как зарезервированный или используется другим процессом. Выясним причину, проверив несколько настроек:

1. Права доступа. Несмотря на запуск 1С под правами администратора, убедимся, что у пользователя терминальной сессии есть полные права на ветку реестра: HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM. Именно оттуда 1С считывает список доступных портов.

2. Ручной ввод порта. Попробуем в настройках 1С не выбирать порт из выпадающего списка, а ввести его имя вручную, например, COM5. Иногда список в интерфейсе не обновляется динамически при переподключении RDP-сессии.

3. Тайм-ауты. При работе через интернет задержки (ping) могут приводить к тому, что 1С считает порт недоступным из-за отсутствия быстрого отклика. Увеличим параметры ожидания в настройках драйвера в 1С:

Метод 5: Использование веб-сервера и тонкого клиента

Как было предложено в первом сообщении темы, радикальным и самым современным способом решения проблем RDP является отказ от самой терминальной сессии для работы с торговым оборудованием. Рассмотрим архитектуру «Веб-сервер + Тонкий клиент».

В этой схеме:

  1. База 1С публикуется на веб-сервере (IIS или Apache).
  2. Пользователь запускает «Тонкий клиент» 1С локально на своем компьютере.
  3. ККТ подключается к локальному компьютеру.
  4. 1С работает с кассой напрямую через локальные драйверы, а данные передает на сервер по HTTP/HTTPS.

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

Резюме

Если вы столкнулись с ошибкой «порт недоступен» в 1С при работающем «Тесте драйвера», наиболее вероятная причина — механизм изоляции портов в RDP-сессиях или конфликт разрядности библиотек. Посмотрите в сторону RNDIS или VPN — это профессиональный стандарт настройки кассового оборудования в распределенных сетях, который избавит вас от необходимости постоянно «прокидывать» порты при каждом входе пользователя.

← На главную