Почему сканер штрихкода добавляет несколько одинаковых товаров в чек в новом РМК 1С:Розница 2.3?

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

Многие пользователи, перешедшие на новое Рабочее место кассира (РМК) в «1С:Розница» редакции 2.3, сталкиваются с неприятной ситуацией: при однократном сканировании штрихкода товара система добавляет в чек две, а иногда и более, одинаковые позиции. Часто это сопровождается небольшой задержкой. Проблема носит «плавающий» характер — может появиться внезапно и временно исчезнуть после перезапуска 1С. Поскольку сбой наблюдается на разных кассовых местах и с разными моделями сканеров, причина кроется не в оборудовании, а в особенностях взаимодействия программы и устройства. Давайте разберемся, почему это происходит и как это исправить.

Основная причина такого поведения — режим подключения сканера. Чаще всего сканеры по умолчанию работают в режиме эмуляции клавиатуры (также известном как «в разрыв клавиатуры», «Keyboard» или «HID»). В этом режиме сканер просто «печатает» цифры штрихкода и нажимает Enter, имитируя действия пользователя. Новое РМК, по всей видимости, имеет специфический механизм обработки таких быстрых клавиатурных событий, что при определенных условиях приводит к их двойному или многократному срабатыванию. Система не успевает корректно обработать первое событие, как тут же получает его дубль.

Рассмотрим несколько способов решения этой проблемы, от самого надежного к альтернативным.

Решение 1: Перевод сканера в режим эмуляции COM-порта (рекомендуется)

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

Разберем по шагам, как переключить сканер в этот режим.

  1. Физическое переключение режима сканера. Для этого нам понадобится инструкция (руководство по программированию) от вашей модели сканера. В ней всегда есть раздел с управляющими штрихкодами. Найдите штрихкод, отвечающий за включение режима «Эмуляция COM-порта», «USB COM» или «RS-232 Emulation», и отсканируйте его. После этого сканер издаст звуковой сигнал, подтверждающий смену режима.
  2. Установка драйвера виртуального COM-порта. После смены режима операционная система Windows, скорее всего, не сможет автоматически распознать устройство. Вам нужно будет установить драйвер, который создаст в системе виртуальный COM-порт для вашего сканера. Этот драйвер обычно можно скачать с официального сайта производителя сканера. После установки в «Диспетчере устройств» Windows (в разделе «Порты (COM и LPT)») появится новое устройство, например, «Scanner (COM3)». Важно запомнить номер порта (в нашем примере — COM3).
  3. Настройка подключения в 1С. Теперь настроим новое подключение в «1С:Розница». Старое подключение сканера (которое работало в режиме клавиатуры) лучше отключить или удалить, чтобы избежать путаницы.
    • Перейдите в раздел НСИ и администрирование — РМК и оборудование — Подключаемое оборудование.
    • Убедитесь, что установлена галочка «Использовать подключаемое оборудование».
    • Нажмите кнопку «Создать».
    • В открывшемся окне выберите тип оборудования: «Сканеры штрихкода».
    • Выберите драйвер оборудования. Рекомендуется использовать универсальный драйвер «1С:Сканеры штрихкода (NativeApi)», так как он поддерживает большинство современных устройств.
    • Укажите рабочее место, к которому подключается сканер, и нажмите «Записать и закрыть».
    • Дважды кликните по созданной строке, чтобы открыть настройки. В поле «Порт» выберите номер COM-порта, который был присвоен сканеру в «Диспетчере устройств» Windows (например, COM3). Остальные параметры (скорость, биты данных и т.д.) обычно можно оставить по умолчанию.
  4. Проверка работы. После сохранения настроек воспользуйтесь тестом устройства в том же окне настроек. Если все сделано правильно, при сканировании любого штрихкода его номер появится в поле теста. Теперь можно открывать РМК и проверять работу — проблема с задвоением строк должна исчезнуть.

Решение 2: Настройка параметров сканера в режиме клавиатуры

Если по каким-то причинам перевод сканера в режим COM-порта невозможен (например, нет драйверов или прав для их установки), можно попробовать оптимизировать его работу в режиме эмуляции клавиатуры. Этот метод менее надежен, но может помочь.

Регулировка задержки передачи данных

Как мы уже выяснили, проблема может быть в слишком быстрой передаче данных. Некоторые модели сканеров позволяют искусственно увеличить задержку между отправкой символов. Для этого снова понадобится инструкция по программированию. Найдите в ней штрихкоды, отвечающие за «Inter-character delay» (межсимвольная задержка). Попробуйте установить небольшое значение, например, 10-20 миллисекунд. Это замедлит «печать» штрихкода и даст 1С больше времени на корректную обработку события.

Настройка суффикса

По умолчанию сканер после штрихкода передает суффикс — управляющий символ, который сообщает программе о завершении ввода. Обычно это символ возврата каретки (CR), эквивалентный нажатию клавиши Enter. В редких случаях неправильно настроенный суффикс (например, двойной CR+LF) может вызывать сбои. Проверьте в инструкции, чтобы сканер был настроен на передачу только одного суффикса Enter (CR).

Временные меры и дополнительная диагностика

Если проблема возникает периодически, а заниматься перенастройкой оборудования прямо сейчас нет возможности, можно использовать временные решения.

В заключение, проанализировав ситуацию, можно с уверенностью сказать, что проблема задвоения строк при сканировании в новом РМК — это программный сбой, связанный с обработкой событий от сканера в режиме эмуляции клавиатуры. Наиболее правильным и надежным решением является перевод сканера в режим эмуляции COM-порта, что обеспечивает стабильный канал обмена данными между устройством и программой.

← На главную