Почему сканер штрихкодов работает в RDP, но не сканирует на локальном ПК в 1С:Бухгалтерия?

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

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

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

Суть проблемы: странное поведение сканера в локальном и терминальном режимах

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

В настройках «1С» через справочник ПодключаемоеОборудование созданы карточки устройств. На локальном ПК настроен порт COM4, на терминальном сервере настроен проброшенный порт, который также отображается как COM4. Однако возникает следующая картина:

  1. При запуске локальной «1С» сканер не реагирует на считывание кодов в формах документов, тест устройства в настройках торгового оборудования выдает ошибку или просто возвращает пустое значение.
  2. При запуске RDP-клиента с включенным пробросом портов и открытии терминальной «1С» сканирование происходит моментально и корректно.
  3. Сторонние диагностические утилиты (например, Putty, HyperTerminal или Hercules) на локальном ПК без проблем открывают COM4 и отображают считанные штрихкоды.

Выясним причину этого парадоксального поведения, которая кроется в архитектуре драйверов торгового оборудования.

Причина №1: Конфликт драйверов за монопольный доступ к COM-порту

Виртуальный COM-порт, в отличие от клавиатурного интерфейса (USB-HID), является строго монопольным ресурсом операционной системы. Это значит, что в один момент времени открыть порт для чтения/записи может только один процесс (одно приложение). Если порт занят фоновой службой, любое другое приложение при попытке подключения получит системный отказ (доступ заблокирован).

При установке оригинального программного обеспечения от производителя сканера (для Datalogic это пакеты утилит настройки, такие как Datalogic Aladdin, или специализированные OPOS/UPOS драйверы) в операционной системе Windows регистрируется фоновая служба автоматического опроса устройств (например, Datalogic Aladdin Service).

Эта служба функционирует по следующему алгоритму:

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

Причина №2: Особенности перенаправления портов в RDP (Port Redirection)

Теперь разберем, почему при этом все отлично работает в RDP-сессии. Механизм проброса портов в протоколе RDP реализован на уровне ядра операционной системы через драйверы перенаправления:

  1. При запуске подключения через RDP-клиент (mstsc.exe) с активированной опцией «Порты», подсистема удаленного доступа Windows перехватывает управление физическим COM-портом COM4 на локальном компьютере.
  2. Этот перехват происходит на приоритетном уровне ввода-вывода. Фоновая служба Datalogic принудительно вытесняется и теряет доступ к порту.
  3. На удаленном сервере RDP создает виртуальный мост. Локальный трафик с порта COM4 инкапсулируется в RDP-пакеты и передается на сервер.
  4. Удаленная база «1С:Бухгалтерия» монопольно открывает проброшенный порт на сервере. Так как на сервере нет установленной фоновой утилиты Datalogic Aladdin, порт оказывается абсолютно свободным, и передача данных проходит без сбоев.
  5. После закрытия или сворачивания RDP-сессии контроль над физическим портом возвращается локальной операционной системе, где его тут же снова перехватывает фоновая служба Datalogic, блокируя доступ для локальной «1С».

Почему нельзя просто переключить сканер в режим USB-HID (клавиатуры)?

Часто системные администраторы, устав бороться с виртуальными COM-портами, принимают решение перевести сканер в режим эмуляции клавиатуры (USB-HID). В таком режиме сканер просто имитирует быстрый ввод символов поочередно, как если бы их набирал человек. Однако для современной розничной торговли и систем маркировки («Честный Знак») этот путь ведет к критическим ошибкам.

Рассмотрим, почему для работы с кодами маркировки DataMatrix жизненно необходим именно COM-порт:

Настройка рабочих мест в 1С: как избежать путаницы

Еще один важный нюанс кроется в подсистеме «1С:Библиотека подключаемого оборудования» (БПО). Нам важно помнить фундаментальное правило платформы: Рабочее место в «1С» жестко идентифицируется связкой: Имя Компьютера + Имя Пользователя Windows.

Поскольку локальный компьютер (например, CASH-DESK-1) и терминальный сервер (например, SRV-TERM) имеют разные сетевые имена, с точки зрения «1С» это два абсолютно разных рабочих места, даже если физически за ними сидит один и тот же человек под одной учетной записью 1С.

Для корректной работы необходимо настроить профили оборудования следующим образом:

  1. Зайдем в «1С:Бухгалтерия» под локальным пользователем. Перейдем в раздел Администрирование — Подключаемое оборудование. Создадим карточку сканера штрихкодов. В поле «Рабочее место» автоматически подставится имя локального ПК. Настроим параметры подключения (укажем COM4).
  2. Зайдем в «1С» через RDP-сессию. Снова откроем справочник подключаемого оборудования. Мы увидим, что созданного локального сканера нет в списке активных для данного (уже терминального) рабочего места. Создадим вторую карточку сканера, где в качестве рабочего места будет указан терминальный сервер. Настроим параметры связи (укажем проброшенный порт, который на сервере также может определяться как COM4 или динамический COM14).

Ни в коем случае нельзя использовать одну карточку оборудования для двух разных физических компьютеров. Это приведет к постоянному сбросу параметров порта при переключении пользователя.

Пошаговая инструкция по решению проблемы и настройке сканера

Перейдем к практическому решению проблемы. Выполним пошагово действия по очистке системы от конфликтующих компонентов и правильной настройке оборудования.

Шаг 1. Полное удаление фирменного программного обеспечения

Современным операционным системам (Windows 10 и Windows 11) не требуются сторонние драйверы для работы виртуальных COM-портов. Система имеет встроенную поддержку класса USB CDC (Communications Device Class) через системный драйвер usbser.sys.

  1. На локальном компьютере перейдем в Панель управления — Программы и компоненты (или «Установка и удаление программ» в параметрах Windows).
  2. Найдем любое программное обеспечение от производителя сканера (Datalogic Aladdin, Datalogic USB COM Driver, OPOS Driver и т.д.).
  3. Удалим эти программы из системы.
  4. Перезагрузим компьютер для гарантированной остановки и удаления связанных фоновых служб.

Шаг 2. Проверка распознавания сканера в Windows

  1. Подключим сканер по USB к компьютеру.
  2. Считаем управляющий штрихкод из руководства пользователя сканера для перевода его в режим эмуляции COM-порта (обычно называется "Enable USB-COM" или "USB-OEM"). Сканер должен издать характерный звуковой сигнал перезагрузки.
  3. Откроем Диспетчер устройств Windows (сочетание клавиш Win+X — Диспетчер устройств).
  4. Развернем ветку Порты (COM и LPT). Мы должны увидеть устройство с именем вида USB Serial Device (COM4) или Datalogic Barcode Scanner (COM4). Главное, чтобы рядом с устройством не было желтого восклицательного знака.

Шаг 3. Настройка сканера в локальной 1С:Бухгалтерия

  1. Запустим локальную базу «1С:Бухгалтерия».
  2. Перейдем в раздел Администрирование — Подключаемое оборудование.
  3. Убедимся, что флаг «Использовать подключаемое оборудование» включен. Нажмем кнопку Подключаемое оборудование.
  4. Выберем тип оборудования Сканеры штрихкодов и нажмем Создать.
  5. В появившейся карточке проверим, что поле «Рабочее место» соответствует нашему локальному ПК. В поле «Драйвер оборудования» выберем стандартный предопределенный драйвер «1С:Сканеры штрихкодов (NativeApi)» или универсальный драйвер от «Гексагон»/«Штрих-М».
  6. Запишем объект и нажмем кнопку Параметры подключения.
  7. В открывшемся окне укажем номер порта (в нашем примере COM4). Скорость (Baud Rate) для виртуальных портов обычно не имеет значения, но стандартно устанавливается 9600 или 115200.
  8. Нажмем кнопку Тест подключения. Аккуратно сканируем любой фабричный штрихкод (например, EAN-13 с коробки от устройства). В окне теста должна появиться строка со считанным кодом и указанием порта. Настройка завершена успешно!

Шаг 4. Настройка проброса портов в RDP

  1. Закроем локальную базу «1С».
  2. Запустим подключение к удаленному рабочему столу (mstsc.exe).
  3. В окне подключения нажмем кнопку Показать параметры, затем перейдем на вкладку Локальные ресурсы.
  4. В блоке «Локальные устройства и ресурсы» нажмем кнопку Подробнее....
  5. Установим флаг напротив пункта Порты. Нажмем «ОК» и подключимся к терминальному серверу.
  6. На сервере откроем «Диспетчер устройств» и убедимся, что в портах появился проброшенный порт (он может называться COM4 (перенаправлено)).
  7. Запустим терминальную «1С» и выполним аналогичную Шагу 3 настройку оборудования для терминального рабочего места.

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

← На главную