Как исправить ошибку монопольного доступа к COM-порту и настроить драйверы АТОЛ для сканера и ТСД в RDP?

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

При организации работы торгового оборудования (сканеров штрихкодов и терминалов сбора данных) на сервере терминалов Windows Server с конфигурацией «1С:Управление торговлей» часто возникают две специфические сложности. Во-первых, при последовательной установке старых версий драйверов АТОЛ (например, DTO6_2009_02_11) компоненты для разных типов устройств могут затирать регистрацию друг друга. Во-вторых, при пробросе виртуального RS-232 порта в RDP-сессию система 1С выдает ошибку: «Не удалось получить монопольный доступ к устройству».

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

Конфликт драйверов АТОЛ DTO 6: причины и способы устранения

В старых версиях драйверов торгового оборудования АТОЛ (линейка DTO 6.x) компоненты для работы со сканерами штрихкодов (Устройства ввода) и терминалами сбора данных (ТСД) используют общие системные библиотеки и совпадающие ключи реестра Windows. Если запустить инсталлятор повторно и выбрать только одну галочку (например, «Устройства ввода»), мастер установки отменяет регистрацию или перезаписывает COM/ActiveX-объекты ранее установленного драйвера ТСД.

Для корректного решения этой проблемы разберем два основных варианта действий:

  1. Полная одновременная установка: Полностью удалим текущие версии драйверов АТОЛ из системы через «Панель управления», очистим каталог установки. Затем запустим инсталлятор заново и обязательно отметим флагами сразу оба пункта — «Устройства ввода» и «Терминалы сбора данных» за один проход.
  2. Ручная регистрация внешних библиотек через утилиту regsvr32: Если одна из внешних библиотек не зарегистрировалась в ОС, выполним её регистрацию вручную от имени администратора. Для этого откроем командную строку Windows и выполним следующие команды:

regsvr32 "C:\Program Files (x86)\ATOL\Drivers\Bin\Scaner_ATOL_v6.dll"
regsvr32 "C:\Program Files (x86)\ATOL\Drivers\Bin\PDT_ATOL_v6.dll"

Проверить корректность установки всех компонентов можно через меню Пуск — АТОЛ — Тест, где должны отображаться тестовые утилиты для всех выбранных категорий оборудования.

Почему возникает ошибка «Не удалось получить монопольный доступ к устройству»?

Проанализируем основные причины, по которым 1С не может занять виртуальный COM-порт в терминальном сеансе:

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

2. Ограничение обработки номеров COM-портов выше COM9
Старые 32-разрядные компоненты 1С и драйверы АТОЛ DTO 6 обращаются к COM-портам по стандартному имени (COM16). Однако операционные системы Windows Server для обращения к портам с двузначными номерами (начиная с COM10 и выше) требуют специального синтаксиса виндовс-путей (\\.\COM16). Поскольку старый драйвер не использует данный синтаксис, вызов функции открытия порта завершается сбоем, который система 1С интерпретирует как отсутствие монопольного доступа.

Пошаговое решение ошибки монопольного доступа к COM-порту

Рассмотрим способы, позволяющие восстановить стабильную работу оборудования через RDP:

  1. Переназначение порта на однозначный номер (COM1–COM9):
    На локальном компьютере пользователя открываем Диспетчер устройств, находим используемый сканер или USB-to-Serial адаптер, заходим в его «Свойства» -> «Параметры порта» -> «Дополнительно» и меняем номер порта на свободный в диапазоне от COM1 до COM9 (например, COM2). Повторяем проброс в RDP-клиенте и в настройках оборудования 1С указываем новый номер.
  2. Отключение неиспользуемых встроенных портов на сервере:
    Для предотвращения конфликтов адресации в BIOS/UEFI сервера можно отключить физические встроенные COM-порты, если они не используются, либо переназначить их номера в Диспетчере устройств сервера.
  3. Явное привязывание порта с помощью команды net use:
    Внутри терминальной RDP-сессии пользователя можно явно перенаправить физический порт клиенской машины на свободный виртуальный порт сеанса. Выполним команду в командной строке сессии:

net use COM2: \\tsclient\COM1

Альтернативный вариант: перевод сканера в режим эмуляции клавиатуры (USB-HID)

Если проброс виртуальных COM-портов через RDP продолжает работать нестабильно из-за обрывов связи, рассмотрим перевод сканера штрихкодов в режим «разрыва клавиатуры» (USB-HID):

  1. Считываем из управляющей документации сканера управляющий штрихкод перевода устройства в режим USB-HID (Keyboard Mode).
  2. В настройках сканера задаем суффикс отправки данных — символ перевода строки (CR / Enter, код 13).
  3. При такой настройке данные передаются в RDP-сессию напрямую как текстовый ввод с клавиатуры, что полностью исключает необходимость установки драйверов COM-портов и проброса serial-устройств на сервер. В 1С обработка данных настраивается с помощью стандартного префикса/суффикса или встроенного механизма перехвата событий ввода.
← На главную