Почему считыватель магнитных карт выводит коды символов вместо данных в 1С:Управление торговлей 10.3 и как его настроить?

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

При подключении считывателей магнитных карт (в частности, моделей марки Posiflex) к конфигурациям на базе обычных форм, таким как «1С:Управление торговлей 10.3», нередко возникает специфическая проблема: при проведении картой в текстовом редакторе («Блокнот») корректно считывается строка вида ;003043?, однако при попытке считать карту в поле ввода 1С вместо реального номера отображается длинная последовательность цифр (например, 059048048051048052051063).

Разберем природу этого поведения и подробно рассмотрим все способы устранения проблемы.

Причина возникновения проблемы

Считыватели магнитных карт, работающие в режиме эмуляции клавиатуры (HID Keyboard), по умолчанию настроены производителем на передачу символов с помощью так называемых Alt-кодов (Alt-Numpad sequence). В этом режиме устройство имитирует зажатие системной клавиши Alt и быстрый набор трехзначного ASCII-кода каждого символа на цифровой клавиатуре:

  1. Код 059 соответствует символу точки с запятой ; (начальный разделитель дорожки).
  2. Код 048 соответствует цифре 0.
  3. Код 051 соответствует цифре 3.
  4. Код 052 соответствует цифре 4.
  5. Код 063 соответствует знаку вопроса ? (конечный разделитель дорожки).

Такой механизм используется для того, чтобы считывание не зависело от активной раскладки клавиатуры операционной системы (русская или английская). Однако платформа 1С в режиме прямого клавиатурного ввода в поле перехватывает нажатия отдельных цифровых клавиш до того, как операционная система успевает собрать их в единый символ. В результате в реквизит попадает сырая строка ASCII-кодов.

Кроме того, прямой ввод в активное поле формы не является штатным способом работы торгового оборудования в 1С. Рассмотрим варианты правильной настройки системы.

Вариант 1. Подключение считывателя через подсистему торгового оборудования 1С

Основной и правильный способ работы с торговым оборудованием в конфигурации «1С:Управление торговлей 10.3» — использование специализированного драйвера устройств ввода и обработчика внешних событий. В этом случае поток данных перехватывается драйвером целиком и передается в программу через процедуру ОбработкаВнешнегоСобытия, независимо от того, где находится курсор.

Разберем по шагам настройку в 1С:

  1. Перейдем в главное меню: Сервис — Торговое оборудование — Подключение и настройка торгового оборудования.
  2. Откроем вкладку Считыватели магнитных карт (или вкладку Сканеры штрихкода при использовании универсального драйвера 1С / АТОЛ для клавиатурных устройств ввода).
  3. Добавим новое устройство, выберем соответствующую обработку обслуживания и драйвер.
  4. Нажмем кнопку Параметры и настроим чувствительность (таймаут между вводом символов, обычно от 30 до 75 мс), а также префиксы и суффиксы посылки (например, суффикс CR / Enter). Это позволит драйверу автоматически отделять быстро поступающие данные ридера от медленного ручного набора с обычной клавиатуры.

В коде формы документа или справочника перехват данных выполняется в стандартной предопределенной процедуре:


Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    
    // Проверяем источник события от торгового оборудования
    Если Источник = "СчитывательМагнитныхКарт" ИЛИ Источник = "СканерШтрихКода" Тогда
        
        // Получаем прочитанный номер карты
        НомерКарты = СокрЛП(Данные);
        
        // Выполняем поиск карты и обработку данных
        ОбработатьСчитаннуюКарту(НомерКарты);
        
    КонецЕсли;

КонецПроцедуры

Вариант 2. Программное отключение режима Alt-кодов в считывателе

Если требуется, чтобы считыватель передавал обычные скан-коды клавиш (Standard Keyboard Mode) без использования Alt-последовательностей, устройство необходимо перепрограммировать.

Проанализируем порядок действий для ридеров Posiflex:

  1. Скачаем и установим сервисную утилиту производителя (например, Posiflex USB MSR Manager).
  2. Подключим устройство и выполним считывание текущей конфигурации из памяти ридера.
  3. В настройках передачи дорожек (Track Configuration) найдем пункт Alt Mode / Alt-sequence и отключим его.
  4. При необходимости отключим передачу служебных символов дорожек (префикса ; и суффикса ?), чтобы избежать проблем с переключением раскладки клавиатуры (в русской раскладке символ ; превращается в букву ж).
  5. Запишем обновленные параметры в энергонезависимую память ридера.

Вариант 3. Аппаратная настройка переключателями (DIP-джамперами)

В некоторых аппаратных ревизиях ридеров Posiflex MR-серии режим передачи данных и интерфейс настраиваются аппаратно с помощью блока микропереключателей (DIP-джамперов), расположенных на плате внутри корпуса или под защитной крышкой.

Посмотрим на особенности аппаратной настройки:

  1. Отключим устройство от компьютера.
  2. Согласно технической документации к конкретной модели (Руководство по эксплуатации Posiflex MSR-2100/2200), переведем переключатели в режим передачи стандартных ASCII-кодов без Alt-эмуляции.
  3. При наличии поддержки аппаратного режима виртуального COM-порта (Virtual COM) переключим ридер в режим работы с эмуляцией последовательного порта.
  4. После переключения подключим ридер обратно и установим VCP-драйвер. Работа через виртуальный COM-порт полностью исключает проблемы с активной раскладкой и системным фокусом полей.
← На главную