При автоматизации торговых точек и складов технические специалисты часто сталкиваются со странным поведением торгового оборудования. Типичный пример: современный беспроводной сканер штрихкодов (например, Datalogic QuickScan QBT2500), настроенный в режиме виртуального COM-порта, прекрасно передает данные внутри терминальной сессии (RDP), но наотрез отказывается работать на локальном компьютере в программе «1С:Бухгалтерия». При этом сторонние утилиты тестирования портов на локальном ПК могут показывать, что порт свободен и данные с устройства приходят исправно.
В этой статье мы подробно разберем, почему возникает этот конфликт, детально изучим физику процессов взаимодействия драйверов ОС Windows и платформы «1С:Предприятие», а также предоставим пошаговый алгоритм решения проблемы.
Проанализируем классический сценарий. У нас есть рабочее место кассира или оператора, база «1С:Бухгалтерия 8» (редакция 3.0), запущенная как локально, так и на удаленном рабочем столе (RDP). Сканер подключен по USB-кабелю и переведен управляющим штрихкодом в режим USB-COM (виртуальный последовательный порт). В операционной системе создается порт, например, COM4.
В настройках «1С» через справочник ПодключаемоеОборудование созданы карточки устройств. На локальном ПК настроен порт COM4, на терминальном сервере настроен проброшенный порт, который также отображается как COM4. Однако возникает следующая картина:
COM4 и отображают считанные штрихкоды.Выясним причину этого парадоксального поведения, которая кроется в архитектуре драйверов торгового оборудования.
Виртуальный COM-порт, в отличие от клавиатурного интерфейса (USB-HID), является строго монопольным ресурсом операционной системы. Это значит, что в один момент времени открыть порт для чтения/записи может только один процесс (одно приложение). Если порт занят фоновой службой, любое другое приложение при попытке подключения получит системный отказ (доступ заблокирован).
При установке оригинального программного обеспечения от производителя сканера (для Datalogic это пакеты утилит настройки, такие как Datalogic Aladdin, или специализированные OPOS/UPOS драйверы) в операционной системе Windows регистрируется фоновая служба автоматического опроса устройств (например, Datalogic Aladdin Service).
Эта служба функционирует по следующему алгоритму:
COM4, она открывает этот порт в монопольном режиме для постоянного мониторинга состояния устройства.COM4 через свою компоненту 1С:Сканер штрихкодов, операционная система отклоняет запрос, так как порт уже занят системной службой Datalogic.Но почему в таком случае другие тестовые программы показывают успешное чтение? Дело в том, что некоторые сервисные утилиты могут использовать низкоуровневые механизмы обхода блокировок или принудительно останавливать конфликтующие службы на время своей работы. Драйверы «1С» работают в строгом соответствии со стандартными вызовами WinAPI (функция CreateFile для открытия порта) и при малейшей занятости ресурса прерывают попытку подключения.
Теперь разберем, почему при этом все отлично работает в RDP-сессии. Механизм проброса портов в протоколе RDP реализован на уровне ядра операционной системы через драйверы перенаправления:
mstsc.exe) с активированной опцией «Порты», подсистема удаленного доступа Windows перехватывает управление физическим COM-портом COM4 на локальном компьютере.COM4 инкапсулируется в RDP-пакеты и передается на сервер.Часто системные администраторы, устав бороться с виртуальными COM-портами, принимают решение перевести сканер в режим эмуляции клавиатуры (USB-HID). В таком режиме сканер просто имитирует быстрый ввод символов поочередно, как если бы их набирал человек. Однако для современной розничной торговли и систем маркировки («Честный Знак») этот путь ведет к критическим ошибкам.
Рассмотрим, почему для работы с кодами маркировки DataMatrix жизненно необходим именно COM-порт:
A превратится в русскую Ф). Код маркировки станет невалидным, и «1С» заблокирует продажу товара. В режиме COM-порта данные передаются в виде чистых байт напрямую в драйвер «1С», минуя языковую раскладку Windows.<GS> (ASCII-код 29), разделяющий группы данных (например, GTIN, серийный номер и ключи проверки). В режиме клавиатуры Windows чаще всего игнорирует этот символ или заменяет его на пробел/табуляцию, что полностью разрушает структуру маркировки. Драйвер COM-порта гарантирует передачу ASCII-29 без искажений.Еще один важный нюанс кроется в подсистеме «1С:Библиотека подключаемого оборудования» (БПО). Нам важно помнить фундаментальное правило платформы: Рабочее место в «1С» жестко идентифицируется связкой: Имя Компьютера + Имя Пользователя Windows.
Поскольку локальный компьютер (например, CASH-DESK-1) и терминальный сервер (например, SRV-TERM) имеют разные сетевые имена, с точки зрения «1С» это два абсолютно разных рабочих места, даже если физически за ними сидит один и тот же человек под одной учетной записью 1С.
Для корректной работы необходимо настроить профили оборудования следующим образом:
COM4).COM4 или динамический COM14).Ни в коем случае нельзя использовать одну карточку оборудования для двух разных физических компьютеров. Это приведет к постоянному сбросу параметров порта при переключении пользователя.
Перейдем к практическому решению проблемы. Выполним пошагово действия по очистке системы от конфликтующих компонентов и правильной настройке оборудования.
Современным операционным системам (Windows 10 и Windows 11) не требуются сторонние драйверы для работы виртуальных COM-портов. Система имеет встроенную поддержку класса USB CDC (Communications Device Class) через системный драйвер usbser.sys.
USB Serial Device (COM4) или Datalogic Barcode Scanner (COM4). Главное, чтобы рядом с устройством не было желтого восклицательного знака.COM4). Скорость (Baud Rate) для виртуальных портов обычно не имеет значения, но стандартно устанавливается 9600 или 115200.mstsc.exe).COM4 (перенаправлено)).Таким образом, убрав «лишнего посредника» в виде фирменного драйвера Datalogic на локальном компьютере, мы полностью ликвидировали конфликт за монопольный доступ к виртуальному COM-порту. Теперь операционная система Windows самостоятельно и корректно управляет портом, позволяя платформе «1С:Предприятие» мгновенно получать данные как при локальной работе, так и при автоматическом перехвате порта RDP-клиентом во время удаленных сессий.