При работе с маркированным товаром (система «Честный ЗНАК», коды формата GS1 DataMatrix) критически важно, чтобы сканер штрихкодов корректно распознавал и передавал в систему специальный управляющий символ-разделитель GS (Group Separator, ASCII-код 29). Без него 1С:Предприятие не сможет правильно разобрать структуру кода маркировки на составляющие (GTIN, серийный номер, ключ и код проверки).
Часто системные администраторы сталкиваются с проблемой: при подключении беспроводных 2D-сканеров (в частности, популярных моделей марки Sunlux, таких как Sunlux XL-9610) символ GS вместо ожидаемого вызова стандартных функций или настроенных клавиш (например, F7) начинает эмулировать нажатие клавиши F8. При этом добавление второго аналогичного сканера в базу может приводить к конфликту настроек, когда первый аппарат работал исправно, а новый нарушает привычный бизнес-процесс.
В этой статье мы подробно разберем, почему возникает данная проблема, проанализируем физику процесса работы сканера в режиме клавиатуры и рассмотрим три практических способа устранения этой неисправности.
Для начала давайте разберем аппаратную специфику оборудования. В беспроводных сканерах Sunlux (включая модель XL-9610) на уровне заводской микропрограммы (прошивки) по умолчанию прописано следующее правило: при работе в режиме эмуляции клавиатуры (USB-HID) управляющий символ GS автоматически преобразуется в нажатие функциональной клавиши F8.
Это стандартное поведение для устройств данного бренда, предназначенное для совместимости со специализированным зарубежным ПО. В то же время в отечественных типовых конфигурациях 1С (таких как УправлениеТорговлей, Розница или УправлениеНашейФирмой) исторически сложились другие правила:
F7 традиционно используется для ручного вызова окна ввода штрихкода, если сканер работает в режиме клавиатуры и не настроен автоматический перехват событий.F7 (или другие комбинации, отличные от F8).Когда вы добавляете второй сканер в базу, 1С создает для него новую карточку в справочнике ПодключаемоеОборудование. Даже если для первого сканера настройки были скорректированы вручную, новое устройство инициализируется с дефолтными параметрами драйвера. В результате система ожидает один символ-разделитель, а физически получает от сканера сигнал клавиши F8, что ломает разбор кода маркировки и вызывает хаотичные действия в интерфейсе программы (например, открытие сторонних форм или завершение текущих операций).
Очистка кэша конфигурации, перезагрузка компьютера или переустановка платформы в данном случае не помогут, так как проблема лежит на стыке физической передачи сигналов устройством и логики обработки этих сигналов внешней компонентой 1С.
Для интеграции оборудования и корректного считывания штрихкодов DataMatrix мы можем воспользоваться тремя различными решениями.
Если вам необходимо оставить сканер работать именно в режиме клавиатуры (USB-HID) — например, из-за ограничений терминального доступа (RDP) или отсутствия возможности установить драйверы виртуального COM-порта, — мы можем настроить драйвер 1С так, чтобы он понимал аппаратный сигнал сканера.
Рассмотрим этот процесс по шагам:
F8. Таким образом, мы сообщаем платформе 1С, что когда сканер присылает сигнал клавиши F8 в потоке данных штрихкода, его нужно интерпретировать как разделитель групп GS, а не как нажатие функциональной кнопки клавиатуры.При использовании современных версий платформы 1С:Предприятие 8.3 (например, 8.3.27 и новее) внешняя компонента перехватывает клавиатурный ввод автоматически по таймауту (задержке между символами). Программе больше не требуется предварительное нажатие F7 для открытия окна поиска — штрихкод будет успешно перехвачен в фоновом режиме и обработан процедурой внешнего события.
Пример программного кода в конфигурации, который обрабатывает такое событие (для общего понимания работы платформы):
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Событие = "Штрихкод" Тогда
// Платформа уже очистила штрихкод от суррогатных клавиш типа F8
// и передает чистую строку с разделителями в алгоритм проверки маркировки
ОбработатьПолученныйШтрихкод(Данные);
КонецЕсли;
КонецПроцедуры
Если логика вашей старой учетной системы или особенности работы торгового оборудования жестко привязаны к клавише F7 в качестве разделителя, мы можем изменить поведение самого сканера Sunlux на аппаратном уровне. Для этого нам понадобится полная инструкция пользователя (Full User Manual) для модели Sunlux XL-9610, содержащая программирующие штрихкоды.
Проанализируем алгоритм настройки:
1D).F7 (код эмуляции клавиши F7 для конкретной версии прошивки Sunlux указан в таблице функциональных клавиш инструкции).После этой процедуры сканер при обнаружении символа GS внутри DataMatrix будет отправлять операционной системе сигнал F7 вместо заводского F8, что вернет совместимость со старыми настройками в 1С без изменения параметров в самой базе данных. При необходимости аппаратной настройки схожих моделей можно использовать набор управляющих штрихкодов для программирования сканера на эмуляцию клавиши F7.
Работа сканеров штрихкодов в режиме эмуляции клавиатуры (USB-HID) имеет ряд существенных недостатков при обработке маркировки «Честный ЗНАК»:
F7 и F8).Для надежного и быстрого считывания кодов DataMatrix мы рекомендуем перевести сканер Sunlux XL-9610 в режим работы виртуального COM-порта (USB-VCP). В этом режиме данные передаются напрямую в порт в виде чистого двоичного потока, минуя буфер клавиатуры Windows. Символ GS передается своим стандартным ASCII-кодом 29, что гарантирует 100% точность распознавания независимо от раскладки и открытых окон на ПК.
Рассмотрим пошагово перевод сканера в режим эмуляции COM-порта:
COM3 или COM4).Подключаемом оборудовании.Клавиатура выберите номер вашего виртуального COM-порта из Диспетчера устройств.Перевод сканера в режим виртуального COM-порта полностью решает проблему конфликтов клавиш F7/F8, значительно ускоряет отклик системы при работе на кассе или складе и исключает любые ошибки при разборе структуры сложных кодов маркировки. В качестве практического примера для устройств других производителей можно использовать руководство по переводу 2D-сканера в режим эмуляции COM-порта.