Работа с торговым оборудованием в 1С часто сопряжена с нюансами взаимодействия драйверов, операционной системы и самой платформы. Одна из распространенных проблем, с которой сталкиваются администраторы и пользователи — потеря связи со сканером штрихкодов после перезагрузки компьютера. Вроде бы все настроено корректно, но после рестарта системы 1С перестает реагировать на сканирование, пока не будут произведены манипуляции с настройками подключения.
Разберем подробно ситуацию на примере сканера Honeywell Voyager 1450g, подключенного в режиме эмуляции COM-порта к конфигурации 1С:Комплексная автоматизация 2 (КА2). Рассмотрим причины такого поведения и предложим несколько эффективных способов решения: от простых настроек в 1С до правки реестра Windows.
Симптомы выглядят следующим образом: сканер подключен физически, индикация работает, но в 1С при сканировании штрихкода не происходит никаких действий (ни в документах, ни в тесте устройства). Проблема временно решается, если в настройках подключаемого оборудования изменить порт с COM на "Клавиатура", а затем вернуть обратно на COM. Это указывает на то, что сама связь физически есть, но программная инициализация порта при старте системы или запуске 1С проходит некорректно.
Давайте проанализируем возможные причины и методы устранения этой неполадки.
Как показала практика обсуждения данной проблемы, самым действенным методом часто оказывается "чистый старт". 1С кэширует параметры подключения оборудования, привязываясь к конкретным идентификаторам устройств. Если драйвер обновился или устройство было переподключено в другой USB-порт, кэш может стать невалидным.
Мы рекомендуем выполнить следующие действия:
Этот метод помог автору вопроса восстановить стабильную работу сканера.
Важно: Если вы используете нетиповые обработки или доработки конфигурации, убедитесь, что в коде формы присутствует вызов метода инициализации оборудования. В типовых конфигурациях (УТ 11, КА 2, ERP) это обычно выглядит так:
// В модуле формы или при создании на сервере
ОбщегоНазначенияУТ.НастроитьПодключаемоеОборудование(ЭтаФорма);
Без этой строки внешнее событие от драйвера не будет перехватываться формой, даже если оборудование настроен корректно.
Очень частая причина "отвала" виртуальных COM-портов после простоя или перезагрузки — настройки энергосбережения Windows. Операционная система по умолчанию может отключать питание USB-концентраторов, что критично для эмуляции COM-порта.
Давайте настроим электропитание правильно:
Дополнительно проверим общую схему электропитания:
При использовании эмуляции COM-порта через USB (USB-COM), Windows может присваивать устройству новый номер COM-порта при переключении в другой разъем USB или после перезагрузки, если инициализация прошла с задержкой. 1С же настроена на конкретный номер порта (например, COM32).
Чтобы заставить Windows игнорировать серийный номер при определении устройства и жестко привязать настройки, можно внести изменения в реестр. Это особенно полезно, если пользователи любят перетыкать сканер в разные разъемы.
Рассмотрим алгоритм действий:
1. Определяем VID (Vendor ID) и PID (Product ID) вашего сканера.
Для этого зайдите в Диспетчер устройств, найдите ваш сканер (в портах COM и LPT или устройствах ввода), откройте Свойства — вкладка Сведения — ИД оборудования.
Вы увидите строку вида: USB\VID_11CA&PID_0207&REV_0100.
Здесь VID = 11CA, а PID = 0207 (это пример для Honeywell, у вас могут быть свои цифры).
2. Создаем файл реестра. Откройте Блокнот и создайте новый файл. Вставьте туда следующий текст, заменив цифры в названии параметра на ваши VID и PID:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags]
"IgnoreHWSerNum11CA0207"=hex:01
Где 11CA0207 — это склеенные VID и PID вашего устройства.
3. Сохраните файл с расширением .reg (например, fix_scanner.reg) и запустите его двойным щелчком, согласившись на внесение изменений.
После этой процедуры, даже если вы переставите сканер в другой USB-порт, Windows с большой вероятностью сохранит за ним прежний номер COM-порта, что избавит вас от необходимости перенастраивать 1С.
Если борьба с COM-портами и драйверами не дает стабильного результата, можно использовать режим эмуляции клавиатуры (Keyboard Wedge). В этом режиме сканер работает как обычная клавиатура: он просто "печатает" считанные символы в то поле, где находится курсор.
Плюсы: Не нужны драйверы COM-порта, работает стабильно в любой ситуации, работает в RDP без проброса портов. Минусы: 1С не получает "Внешнее событие". Это значит, что для сканирования нужно, чтобы курсор обязательно стоял в нужном поле ввода или в форме был перехвачен фокус. Если всплывет окно Skype или ошибка — сканер "пропищит" данные в пустоту или в чужое окно.
Если вы решили выбрать этот путь, настроим его правильно:
#13 или CR), чтобы 1С понимала, что ввод завершен. В типовых конфигурациях 1С часто достаточно настроить это только на самом сканере, но иногда требуется продублировать настройку и в драйвере 1С.При такой настройке событие сканирования будет обрабатываться как нажатие клавиш. Тест устройства в 1С должен показывать полученный штрихкод и в конце символ CR (или 'CR').
Если вы используете режим COM-порта, убедитесь, что установлен "родной" драйвер от производителя. Для Honeywell 1450g это Honeywell HSM USB Serial Driver. Стандартный драйвер Microsoft usbser.sys в Windows 10/11 работает неплохо, но драйвер производителя обеспечивает более стабильную работу виртуального порта и корректное восстановление после сна.
Используйте утилиту Honeywell EZConfig для точной настройки сканера, обновления прошивки и проверки суффиксов/префиксов, если у вас нет под рукой бумажной инструкции с кодами.