Как развести конфликтующие COM-порты кассы и сканера при работе в 1С 7.7 через терминал

Системный администратор 1С v7.7 Торговля и дистрибуция
← На главную

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

Анализ проблемы: почему возникают конфликты

Проанализируем ситуацию, типичную для многих торговых точек. Кассовый аппарат «Штрих-М» подключен к терминальному серверу через USB-COM переходник. Параллельно с этим на локальном компьютере пользователя подключен сканер штрих-кодов, который также пробрасывается в терминальную сессию через настройки RDP. Конфликт возникает в тот момент, когда серверная операционная система назначает проброшенному порту сканера тот же индекс (например, COM3), который уже занят драйвером кассы на сервере.

Ситуация осложняется тем, что старые компоненты 1С 7.7 имеют программное ограничение: они корректно работают с портами только в диапазоне от COM1 до COM9. Если устройство получит номер COM10 или выше, программа его просто не увидит. Наша задача — распределить устройства в «младшем» диапазоне так, чтобы они не пересекались.

Способ 1. Принудительное назначение номера порта в диспетчере устройств

Самый простой и эффективный метод — это жесткое закрепление номера порта за устройством на локальной машине пользователя. Разберем по шагам, как это сделать:

  1. На локальном компьютере (где физически подключено устройство) откроем «Диспетчер устройств».
  2. Развернем ветку «Порты (COM и LPT)».
  3. Найдем наше устройство (например, USB-SERIAL CH340 или Prolific).
  4. Нажмем правую кнопку мыши и выберем «Свойства».
  5. Перейдем на вкладку «Параметры порта» и нажмем кнопку «Дополнительно».
  6. В открывшемся окне найдем выпадающий список «Номер COM-порта». Изменим текущий номер на любой свободный в диапазоне до 9 (например, COM8 или COM9).

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

Способ 2. Очистка «призрачных» портов

Часто бывает так, что все свободные номера портов (с 1 по 9) заняты «скрытыми» устройствами, которые когда-то подключались к компьютеру. Выясним причину этого поведения: Windows запоминает каждое USB-устройство и резервирует за ним номер порта, даже если устройство отключено. Чтобы освободить эти номера, выполним следующие действия:

Запустим командную строку от имени администратора и введем следующую команду:


set devmgr_show_nonpresent_devices=1
start devmgmt.msc

После открытия Диспетчера устройств выполним следующие шаги:

  1. В верхнем меню выберем «Вид» — «Показать скрытые устройства».
  2. В разделе «Порты (COM и LPT)» появятся полупрозрачные (серые) иконки. Это и есть наши «призраки».
  3. Удалим все неиспользуемые серые устройства.

После этой процедуры нужные нам номера портов станут свободными для назначения актуальному оборудованию.

Способ 3. Диагностика и управление портами в терминальной сессии

Когда мы работаем через RDP, важно понимать, как именно сервер видит наши локальные порты. Для этого воспользуемся системной утилитой change port. Разберем, как проанализировать ситуацию непосредственно на терминальном сервере:

Откроем командную строку внутри терминальной сессии и введем:

change port /query

Эта команда выведет таблицу соответствия. Например, она может показать, что ваш локальный COM3 отображается в сессии как TS001 или переназначен на другой номер. Если вы видите, что два разных устройства претендуют на одно имя, это явный признак конфликта. Чтобы избежать этого, рекомендуется на клиентской машине переименовать порты в «редкие» номера (например, COM7 и COM8) и именно их пробрасывать в сессию.

Способ 4. Использование команд mode и net use

В некоторых случаях стандартный механизм проброса портов через настройки RDP-клиента работает нестабильно. Тогда мы можем использовать принудительное связывание портов. Рассмотрим пример настройки параметров порта через скрипт входа:

mode COM8: BAUD=9600 PARITY=N DATA=8 STOP=1

Эта команда инициализирует параметры порта прямо в сессии, что помогает избежать сброса настроек скорости или четности при переподключении. Если же необходимо перенаправить порт на сетевой ресурс (например, если касса подключена к другому компьютеру в сети), можно воспользоваться командой:

net use COM1: \\имя_компьютера\имя_порта /persistent:yes

Аппаратные особенности: FTDI против Prolific

Проанализируем влияние «железа» на стабильность портов. Опыт показывает, что дешевые USB-COM переходники на чипах Prolific или CH340 часто меняют номер порта при переключении в другой USB-разъем системного блока. Это главная причина внезапного «отвала» оборудования в 1С.

Рекомендуем использовать устройства на чипах FTDI. В свойствах их драйвера есть опция «VCP» (Virtual COM Port) и возможность жесткой привязки номера порта к серийному номеру самого чипа. В таком случае, в какой бы USB-порт вы ни воткнули кассу, она всегда останется, например, COM3.

Специфика настройки касс «Штрих-М»

Для кассовых аппаратов данного производителя существует еще один важный момент. При работе через терминал и USB-переходники часто возникает задержка передачи пакетов данных. Выясним, как это лечится:

В «Тесте драйвера» кассы найдите раздел настроек связи. Параметр «Таймаут» по умолчанию обычно равен 30–50 мс. При работе в терминале этого критически мало. Увеличьте его до 150–300 мс. Это позволит избежать ложных ошибок «Нет связи», которые часто ошибочно принимают за конфликт номеров COM-портов.

Резюме: Чтобы развести оборудование, первым делом очистите систему от скрытых портов, назначьте локальным устройствам уникальные номера в диапазоне COM1-COM9 и убедитесь в настройках RDP-клиента, что включен проброс портов. При сохранении проблем используйте команду change port для детальной диагностики соответствий на сервере.

← На главную