При развертывании 64-разрядного клиента платформы «1С:Предприятие 8.3» на сервере терминалов (RDP) системные администраторы и специалисты 1С нередко сталкиваются с ситуацией, когда торговое оборудование — в частности сканеры штрихкодов — полностью перестает определяться и функционировать. В 32-разрядном клиенте та же связка работает стабильно. Разберем причины возникновения этой проблемы и рассмотрим все доступные способы её решения.
Проанализируем техническую причину сбоя: классический драйвер ScanOPOS.dll является 32-битной внешней COM-компонентой. Архитектура операционной системы Windows не позволяет 64-битному процессу (1cv8.exe x64) напрямую загружать в свое адресное пространство 32-битные динамические библиотеки (DLL). Поскольку разрядности клиента и внешней компоненты не совпадают, 1С выдает ошибку инициализации или просто не видит подключенное торговое оборудование.
Если в информационной базе используется унаследованный механизм торгового оборудования, жестко завязанный на старый драйвер ScanOPOS.dll, самым быстрым и надежным решением будет запуск 32-битного клиента «1С:Предприятие».
Разберем по шагам, как организовать работу:
C:\Program Files (x86)\1cv8\...).ScanOPOS.dll в 32-разрядной подсистеме Windows с помощью утилиты regsvr32, запустив командную строку от имени администратора:
C:\Windows\SysWOW64\regsvr32.exe "C:\Path\To\ScanOPOS.dll"
В современных конфигурациях на базе «Библиотеки подключаемого оборудования» (БПО) фирма «1С» отказалась от устаревшей технологии COM в пользу Native API. Новый драйвер поставляется сразу в двух вариантах: для 32- и 64-битных платформ.
Выполним переход на компонент Native API по следующему алгоритму:
ScanOPOSNativeWin64.dll для 64-битного клиента.Если конфигурация не поддерживает БПО Native API, но требуется использовать именно 64-битный клиент платформы, можно задействовать внешние компоненты сторонних разработчиков, имеющие нативную поддержку x64.
Посмотрим на доступные альтернативы:
Для подключения выберем в справочнике драйверов оборудования соответствующего поставщика, загрузим 64-битную внешнюю компоненту и перепривяжем физический сканер к новому обработчику.
Если сканер подключен через порт USB и нет необходимости использовать COM-эмуляцию с перехватом прерываний через ScanOPOS.dll, можно перевести устройство в режим эмуляции клавиатуры (USB HID Keyboard).
Разберем особенности этого режима:
Enter — код 13, либо Tab — код 9) или префикса.Важный нюанс при работе по RDP: если сканер работает в режиме виртуального COM-порта (Virtual COM), убедимся, что на клиенте удаленного рабочего стола включено перенаправление портов (вкладка «Локальные ресурсы» — «Подробнее» — флажок «Порты»), а в групповых политиках сервера не запрещен проброс последовательных портов.