Многие пользователи, перешедшие на новое Рабочее место кассира (РМК) в «1С:Розница» редакции 2.3, сталкиваются с неприятной ситуацией: при однократном сканировании штрихкода товара система добавляет в чек две, а иногда и более, одинаковые позиции. Часто это сопровождается небольшой задержкой. Проблема носит «плавающий» характер — может появиться внезапно и временно исчезнуть после перезапуска 1С. Поскольку сбой наблюдается на разных кассовых местах и с разными моделями сканеров, причина кроется не в оборудовании, а в особенностях взаимодействия программы и устройства. Давайте разберемся, почему это происходит и как это исправить.
Основная причина такого поведения — режим подключения сканера. Чаще всего сканеры по умолчанию работают в режиме эмуляции клавиатуры (также известном как «в разрыв клавиатуры», «Keyboard» или «HID»). В этом режиме сканер просто «печатает» цифры штрихкода и нажимает Enter, имитируя действия пользователя. Новое РМК, по всей видимости, имеет специфический механизм обработки таких быстрых клавиатурных событий, что при определенных условиях приводит к их двойному или многократному срабатыванию. Система не успевает корректно обработать первое событие, как тут же получает его дубль.
Рассмотрим несколько способов решения этой проблемы, от самого надежного к альтернативным.
Это самый стабильный и правильный способ организации работы торгового оборудования с 1С. В режиме эмуляции COM-порта (RS-232) обмен данными происходит не как имитация нажатия клавиш, а через специальный драйвер, который обеспечивает контролируемую и надежную передачу информации. Программа 1С точно знает, когда начался и когда закончился ввод данных от сканера, что исключает ложные повторные срабатывания. Для настройки интеграции можно использовать обработку обслуживания сканеров штрихкода на базе NativeAPI.
Разберем по шагам, как переключить сканер в этот режим.
НСИ и администрирование — РМК и оборудование — Подключаемое оборудование.Если по каким-то причинам перевод сканера в режим COM-порта невозможен (например, нет драйверов или прав для их установки), можно попробовать оптимизировать его работу в режиме эмуляции клавиатуры. Этот метод менее надежен, но может помочь.
Регулировка задержки передачи данных
Как мы уже выяснили, проблема может быть в слишком быстрой передаче данных. Некоторые модели сканеров позволяют искусственно увеличить задержку между отправкой символов. Для этого снова понадобится инструкция по программированию. Найдите в ней штрихкоды, отвечающие за «Inter-character delay» (межсимвольная задержка). Попробуйте установить небольшое значение, например, 10-20 миллисекунд. Это замедлит «печать» штрихкода и даст 1С больше времени на корректную обработку события.
Настройка суффикса
По умолчанию сканер после штрихкода передает суффикс — управляющий символ, который сообщает программе о завершении ввода. Обычно это символ возврата каретки (CR), эквивалентный нажатию клавиши Enter. В редких случаях неправильно настроенный суффикс (например, двойной CR+LF) может вызывать сбои. Проверьте в инструкции, чтобы сканер был настроен на передачу только одного суффикса Enter (CR).
Если проблема возникает периодически, а заниматься перенастройкой оборудования прямо сейчас нет возможности, можно использовать временные решения.
В заключение, проанализировав ситуацию, можно с уверенностью сказать, что проблема задвоения строк при сканировании в новом РМК — это программный сбой, связанный с обработкой событий от сканера в режиме эмуляции клавиатуры. Наиболее правильным и надежным решением является перевод сканера в режим эмуляции COM-порта, что обеспечивает стабильный канал обмена данными между устройством и программой.