Подключение торгового оборудования к платформе 1С:Предприятие часто сопровождается техническими сложностями, особенно когда речь идет о современных 64-битных клиентах и работе в терминальном режиме (RDP). Одной из наиболее популярных моделей 2D-сканеров на рынке является Honeywell Voyager 1450g. Он активно используется для считывания обычных штрихкодов и кодов маркировки (DataMatrix) систем «Честный ЗНАК».
В этой статье мы подробно разберем, как решить проблемы с подключением этого сканера в 1С 8.3, почему возникают ошибки вида «Не удалось загрузить драйвер устройства» или «Ошибка обращения к драйверу (999)», и как правильно настроить работу устройства через виртуальный COM-порт.
Проанализируем типичную ситуацию, с которой сталкиваются системные администраторы и специалисты 1С. При попытке настроить сканер через режим эмуляции COM-порта система выдает ошибку:
При подключении оборудования произошла ошибка: "'Voyager 1450g' на (ВАСЯ): Не удалось загрузить драйвер устройства..."
Или другую ошибку:
Ошибка обращения к драйверу. (999). Ошибка получения описания драйвера ... Значение не является значением объектного типа (ПолучитьНомерВерсии)
Основная причина кроется в несовместимости разрядности платформы 1С и используемых драйверов оборудования. Если на рабочем месте пользователя установлена 64-битная версия клиента 1С:Предприятие, она физически не сможет загрузить старые 32-битные внешние компоненты (например, популярный ранее драйвер Scaner1C.8.1.7.9 или старые компоненты АТОЛ).
Для корректной работы в 64-битной среде необходимо использовать современный универсальный драйвер 1С:Сканеры штрихкода (NativeApi). Он поставляется в составе БПО (Библиотеки подключаемого оборудования) и содержит компоненты как для 32-разрядных, так и для 64-разрядных приложений.
По умолчанию сканер поставляется настроенным в режиме эмуляции клавиатуры (Keyboard Wedge). При таком режиме данные со сканера передаются в активное текстовое поле на экране так, будто их набрали на клавиатуре вручную. Однако для стабильной работы 1С (особенно в фоновом режиме без необходимости постоянно держать фокус ввода в поле ввода штрихкода) рекомендуется перевести устройство в режим виртуального COM-порта.
Разберем по шагам, как перепрограммировать сканер:
TERMID130) и считайте его. После этого устройство на программном уровне переключится в режим эмуляции последовательного порта.После сканирования настроечного штрихкода Windows может выдать сообщение о неизвестном устройстве. Чтобы операционная система корректно распознала виртуальный порт, выполним следующие действия:
Honeywell Control Point), и система назначит ему номер порта (допустим, COM4). Запомните этот номер — он пригодится нам в 1С.Теперь перейдем к настройке конфигурации 1С (на примере «Управление торговлей», «Розница» или любой другой системы на базе БПО):
COM4).13 (CR). Убедитесь, что оно заполнено.Если при попытке выполнить тест или сохранить настройки вы все равно получаете «Ошибка обращения к драйверу (999)», это свидетельствует о проблемах с регистрацией внешней компоненты в ОС. Выясним причину и применим решения:
Решение А: Запуск от имени Администратора. Некоторые версии ОС блокируют запись внешних библиотек в локальные папки пользователя. Закройте 1С, нажмите правой кнопкой мыши по ярлыку платформы и выберите «Запуск от имени администратора». Попробуйте настроить оборудование заново. Компонента NativeApi успешно зарегистрируется в системе, после чего можно будет запускать 1С в обычном пользовательском режиме.
Решение Б: Проверка библиотек Microsoft Visual C++. Современные драйверы NativeApi компилируются с использованием библиотек C++. Если на компьютере отсутствуют актуальные пакеты Microsoft Visual C++ Redistributable (2015-2019), драйвер просто не сможет инициализироваться, возвращая неопределенную ошибку. Установите библиотеки соответствующей разрядности (в нашем случае x64) с официального сайта Microsoft.
Если ваша база 1С работает на удаленном сервере (например, Windows Server 2012) и вы подключаетесь к ней через удаленный рабочий стол (mstsc), необходимо правильно пробросить локальный виртуальный COM-порт в терминальную сессию:
COM4 на удаленный сервер.COM4 (redirected).Важно: устанавливать драйвер Honeywell HSM USB Serial Driver нужно именно на локальном компьютере, куда физически подключен сканер. На самом сервере этот драйвер устанавливать не требуется, так как сервер оперирует уже проброшенным виртуальным каналом связи.
Для понимания того, как платформа взаимодействует со сканером на программном уровне после его корректной регистрации, рассмотрим пример кода в модуле формы или в модуле управляемого приложения. При работе в режиме COM-порта сканер посылает в программу внешнее событие, которое перехватывается платформой 1С:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Проверим, что событие пришло именно от сканера штрихкодов
Если ПолучитьСигналОтОборудования(Источник, Событие) Тогда
// Очищаем полученные данные от возможных пробелов и спецсимволов
ТекущийШтрихкод = СокрЛП(Данные);
// Передаем штрихкод в процедуру поиска и обработки номенклатуры
ОбработатьПолученныйШтрихкод(ТекущийШтрихкод);
КонецЕсли;
КонецПроцедуры
Использование этого механизма избавляет кассиров и операторов от необходимости предварительно нажимать на кнопки поиска или позиционировать курсор в поле ввода. Сканирование происходит мгновенно из любой формы документа.
Если сетевые настройки терминального сервера или ограничения безопасности не позволяют пробросить COM-порты через RDP, рассмотрим альтернативный стабильный вариант. Современная библиотека БПО позволяет настроить сканер в режиме клавиатуры, но при этом использовать драйвер 1С для перехвата нажатий.
В этом случае в настройках 1С в поле «Порт» мы выбираем значение Клавиатура. Сканер программируется стандартным образом (без перевода в USB-Serial, то есть в режиме эмуляции клавиатуры с суффиксом возврата каретки CR). Драйвер 1С:Сканеры штрихкода (NativeApi) будет автоматически перехватывать быстрый поток символов, сопоставлять его со скоростью ввода человека и генерировать полноценное внешнее событие так же, как если бы сканер был подключен через физический COM-порт.