Как подключить и настроить USB-сканер Honeywell 1450g или Atol SB2108 в режиме COM-порта для 1С:Розница 2.3

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

При работе с маркированной продукцией (честный знак, получение карточек товаров и информации по кодам), молочная продукция, вода) пользователи часто сталкиваются с тем, что сканер штрихкода в режиме эмуляции клавиатуры работает некорректно: "проглатывает" символы, не передает спецсимволы-разделители или требует переключения раскладки. Оптимальным решением является перевод сканера в режим виртуального последовательного порта (Virtual COM Port). В данной статье мы разберем, как правильно настроить оборудование Honeywell 1450g и Атол SB2108 Plus для работы в 1С:Розница 2.3 на 64-битных системах.

Зачем переводить сканер в режим COM-порта?

Рассмотрим основные причины, по которым режим "разрыва клавиатуры" (HID Keyboard) не подходит для профессиональной работы с 1С:

Шаг 1. Физическая настройка сканера и установка драйверов

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

Для Honeywell 1450g:

  1. Сканируем код "TERMID130" (USB Serial Emulation). После этого устройство может временно "пропасть" из системы и появиться как неизвестное устройство CDC ACM.
  2. Устанавливаем официальный драйвер Honeywell HSM USB Serial Driver. Важно использовать актуальную версию, поддерживающую x64 архитектуру.
  3. Проверяем в "Диспетчере устройств" ветку "Порты (COM и LPT)". Там должно появиться устройство вида Honeywell Virtual COM Port (COMx).

Для Атол SB2108 Plus:

Процедура аналогична: используем руководство для перевода в режим USB-COM. Если устройство определяется некорректно, убеждаемся, что установлены драйверы торгового оборудования Атол.

Шаг 2. Настройка 1С:Розница и драйвера NativeApi

Выясним, как подключить настроенное устройство к 1С. По аналогии с тем, как настраивается работа с оборудованием на свежей БПО, мы рекомендуем использовать современный драйвер 1С:Сканеры штрихкода (NativeApi), так как он встроен в платформу и не требует регистрации внешних COM-компонент. Для быстрой настройки можно использовать обработку обслуживания сканеров через драйвер NativeAPI.

Разберем последовательность действий в интерфейсе 1С:

  1. Переходим в раздел Администрирование — Подключаемое оборудование.
  2. Выбираем тип оборудования "Сканеры штрихкода" и создаем новый экземпляр.
  3. В поле "Драйвер оборудования" выбираем 1С:Сканеры штрихкода (NativeApi).
  4. Нажимаем кнопку "Настроить" и указываем следующие параметры:
    • Порт: Выбираем номер порта, который мы увидели в Диспетчере устройств (например, COM3).
    • Суффикс: По умолчанию для большинства сканеров это 13 (CR).
    • Скорость: Обычно 9600, но для виртуального порта это значение не является критичным.
  5. Нажимаем "Тест устройства" и сканируем любой штрихкод. В окне теста должна появиться строка с данными и указанием порта.

Шаг 3. Решение ошибки "Недопустимый символ XML" (GS-символ)

Рассмотрим ситуацию, когда сканер настроен правильно, тест проходит успешно, но при попытке сканирования маркировки (DataMatrix) 1С выдает ошибку: Текст XML содержит недопустимый символ в позиции.... Это происходит потому, что символ GS (код 29) нельзя передавать в строковых параметрах между клиентом и сервером в исходном виде, так как 1С использует XML-сериализацию для передачи данных.

Проанализируем пример кода, который вызывает ошибку, и исправим его:


&НаКлиенте
Процедура ОбработатьШтрихКод(ШтрихКодТовара)
    // ОШИБКА: Прямая передача штрихкода с символом GS на сервер вызовет падение XML
    Номенклатура = НоменклатураПоШтрихКоду(ШтрихКодТовара); 
КонецПроцедуры

Чтобы избежать этой ошибки, нам необходимо "очистить" штрихкод перед отправкой на сервер или заменить недопустимые символы. Разберем правильный подход:


&НаКлиенте
Процедура ОбработатьШтрихКод(Данные)
    // Очищаем код от спецсимволов ASCII < 32 (включая GS - код 29)
    ЧистыйШтрихкод = "";
    Для Сч = 1 По СтрДлина(Данные) Цикл
        Символ = Сред(Данные, Сч, 1);
        КодСимвола = КодСимвола(Символ);
        Если КодСимвола >= 32 Тогда
            ЧистыйШтрихкод = ЧистыйШтрихкод + Символ;
        КонецЕсли;
    КонецЦикла;
    
    // Теперь передача на сервер безопасна
    Номенклатура = НоменклатураПоШтрихКодуНаСервере(ЧистыйШтрихкод);
КонецПроцедуры

Шаг 4. Инициализация оборудования в произвольных формах

Выясним причину, по которой сканер может "залипать" или не срабатывать в самописных обработках. Часто бывает так, что в типовом рабочем месте кассира (РМК) сканер работает, а в новой созданной форме — нет. Это связано с тем, что оборудование нужно явно подключить при открытии формы.

Рассмотрим, как правильно инициализировать сканер в обработчике формы ПриОткрытии:


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    // Подключаем сканер штрихкода для данной формы
    Оповещение = Новый ОписаниеОповещения("ПослеПодключенияОборудования", ЭтотОбъект);
    МенеджерОборудованияКлиент.ПодключитьОборудованиеПоТипу(Оповещение, "СканерШтрихкода");
КонецПроцедуры

&НаКлиенте
Процедура ПослеПодключенияОборудования(Результат, Параметры) Экспорт
    Если Не Результат Тогда
        Сообщить("Не удалось подключить сканер штрихкода!");
    КонецЕсли;
КонецПроцедуры

Без этого вызова 1С не будет перехватывать данные из COM-порта в контексте текущей формы, и процедура ВнешнееСобытие не будет вызвана.

Резюме и практические советы

  1. Всегда проверяйте работу сканера вне 1С с помощью утилит типа Putty или специализированных тестеров COM-портов. Если там данные приходят — проблема в настройках 1С.
  2. Для 64-битных платформ 1С используйте только актуальные NativeApi драйверы из состава последних версий БПО (Библиотеки подключаемого оборудования).
  3. Если работаете в терминальном режиме (RDP), не забудьте пробросить COM-порты в настройках подключения (вкладка "Локальные ресурсы").
  4. Для корректной обработки маркировки используйте встроенные функции БПО для разбора кодов GS1, такие как МенеджерОборудованияКлиент.РазобратьШтрихкод().

Соблюдение этих шагов позволит вам настроить Honeywell 1450g или Atol SB2108 максимально эффективно, обеспечив надежное считывание кодов DataMatrix и отсутствие ошибок при передаче данных в информационную базу 1С.

← На главную