При работе с маркированной продукцией (честный знак, получение карточек товаров и информации по кодам), молочная продукция, вода) пользователи часто сталкиваются с тем, что сканер штрихкода в режиме эмуляции клавиатуры работает некорректно: "проглатывает" символы, не передает спецсимволы-разделители или требует переключения раскладки. Оптимальным решением является перевод сканера в режим виртуального последовательного порта (Virtual COM Port). В данной статье мы разберем, как правильно настроить оборудование Honeywell 1450g и Атол SB2108 Plus для работы в 1С:Розница 2.3 на 64-битных системах.
Рассмотрим основные причины, по которым режим "разрыва клавиатуры" (HID Keyboard) не подходит для профессиональной работы с 1С:
GS (ASCII 29). В режиме клавиатуры он часто игнорируется или заменяется драйвером ОС.ВнешнееСобытие в 1С, даже если фокус ввода не стоит в текстовом поле.Проанализируем процесс подготовки оборудования. Прежде чем выполнять сопоставление марок табачной продукции, для того чтобы операционная система увидела сканер как последовательный порт, необходимо отсканировать специальный управляющий штрихкод из руководства пользователя.
Для Honeywell 1450g:
CDC ACM.Honeywell Virtual COM Port (COMx).Для Атол SB2108 Plus:
Процедура аналогична: используем руководство для перевода в режим USB-COM. Если устройство определяется некорректно, убеждаемся, что установлены драйверы торгового оборудования Атол.
Выясним, как подключить настроенное устройство к 1С. По аналогии с тем, как настраивается работа с оборудованием на свежей БПО, мы рекомендуем использовать современный драйвер 1С:Сканеры штрихкода (NativeApi), так как он встроен в платформу и не требует регистрации внешних COM-компонент. Для быстрой настройки можно использовать обработку обслуживания сканеров через драйвер NativeAPI.
Разберем последовательность действий в интерфейсе 1С:
13 (CR).Рассмотрим ситуацию, когда сканер настроен правильно, тест проходит успешно, но при попытке сканирования маркировки (DataMatrix) 1С выдает ошибку: Текст XML содержит недопустимый символ в позиции.... Это происходит потому, что символ GS (код 29) нельзя передавать в строковых параметрах между клиентом и сервером в исходном виде, так как 1С использует XML-сериализацию для передачи данных.
Проанализируем пример кода, который вызывает ошибку, и исправим его:
&НаКлиенте
Процедура ОбработатьШтрихКод(ШтрихКодТовара)
// ОШИБКА: Прямая передача штрихкода с символом GS на сервер вызовет падение XML
Номенклатура = НоменклатураПоШтрихКоду(ШтрихКодТовара);
КонецПроцедуры
Чтобы избежать этой ошибки, нам необходимо "очистить" штрихкод перед отправкой на сервер или заменить недопустимые символы. Разберем правильный подход:
&НаКлиенте
Процедура ОбработатьШтрихКод(Данные)
// Очищаем код от спецсимволов ASCII < 32 (включая GS - код 29)
ЧистыйШтрихкод = "";
Для Сч = 1 По СтрДлина(Данные) Цикл
Символ = Сред(Данные, Сч, 1);
КодСимвола = КодСимвола(Символ);
Если КодСимвола >= 32 Тогда
ЧистыйШтрихкод = ЧистыйШтрихкод + Символ;
КонецЕсли;
КонецЦикла;
// Теперь передача на сервер безопасна
Номенклатура = НоменклатураПоШтрихКодуНаСервере(ЧистыйШтрихкод);
КонецПроцедуры
Выясним причину, по которой сканер может "залипать" или не срабатывать в самописных обработках. Часто бывает так, что в типовом рабочем месте кассира (РМК) сканер работает, а в новой созданной форме — нет. Это связано с тем, что оборудование нужно явно подключить при открытии формы.
Рассмотрим, как правильно инициализировать сканер в обработчике формы ПриОткрытии:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// Подключаем сканер штрихкода для данной формы
Оповещение = Новый ОписаниеОповещения("ПослеПодключенияОборудования", ЭтотОбъект);
МенеджерОборудованияКлиент.ПодключитьОборудованиеПоТипу(Оповещение, "СканерШтрихкода");
КонецПроцедуры
&НаКлиенте
Процедура ПослеПодключенияОборудования(Результат, Параметры) Экспорт
Если Не Результат Тогда
Сообщить("Не удалось подключить сканер штрихкода!");
КонецЕсли;
КонецПроцедуры
Без этого вызова 1С не будет перехватывать данные из COM-порта в контексте текущей формы, и процедура ВнешнееСобытие не будет вызвана.
NativeApi драйверы из состава последних версий БПО (Библиотеки подключаемого оборудования).GS1, такие как МенеджерОборудованияКлиент.РазобратьШтрихкод().Соблюдение этих шагов позволит вам настроить Honeywell 1450g или Atol SB2108 максимально эффективно, обеспечив надежное считывание кодов DataMatrix и отсутствие ошибок при передаче данных в информационную базу 1С.