Почему сканер штрихкодов работает в тесте подключения 1С, но не сканирует в РМК?

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

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

В этой статье мы подробно проанализируем причины такого поведения оборудования и разберем по шагам, как настроить сканер для стабильной работы в РМК с использованием драйвера 1С:Сканеры штрихкода (NativeAPI).

---

Почему в «Тесте» данные есть, а в РМК — нет?

Для начала разберем внутренний механизм обработки сигналов торгового оборудования в платформе 1С. Окно «Тест подключения» работает в режиме «сырого» перехвата данных. Оно просто фиксирует любые символы, которые драйвер успел поймать от клавиатурного буфера или виртуального COM-порта, и сразу выводит их на экран.

Но для того чтобы 1С отреагировала на сканирование непосредственно в форме РМК или в документе, драйвер оборудования должен сформировать полноценное «Внешнее событие» (External Event). Если внешнее событие не сгенерировано, логика РМК просто не запустится, и данные не будут обработаны. Чтобы драйвер NativeAPI понял, что перед ним именно штрихкод, а не случайный быстрый ввод пользователя с обычной клавиатуры, ему необходимы четкие ориентиры начала и окончания передачи данных. Основным таким ориентиром служит суффикс возврата каретки (CR).

---

Решение 1: Проверка и программирование суффикса возврата каретки (CR)

Самая частая причина «немого» сканера в РМК — отсутствие суффикса в самом сканирующем устройстве. Это происходит, когда сканер сбрасывают к заводским настройкам или случайно считывают настроечный код из руководства пользователя.

При работе в режиме эмуляции клавиатуры («в разрыв клавиатуры») сканер имитирует очень быстрое нажатие кнопок. Чтобы 1С поняла, что передача штрихкода завершена, сканер в конце отправки должен послать управляющий символ «Enter». На языке разметки данных это символ возврата каретки — CR (Carriage Return, ASCII-код 13) или перевод строки — LF (Line Feed, ASCII-код 10).

Проверим работу суффикса по шагам:

  1. Откроем на рабочем столе компьютера стандартное приложение Блокнот (Notepad).
  2. Установим курсор в текстовую область и отсканируем любой товарный штрихкод.
  3. Проанализируем результат:
    • Если штрихкод отобразился в блокноте, а курсор остался мигать на той же строке сразу за последней цифрой штрихкода, значит, суффикс отключен. 1С не сможет распознать конец ввода и сгенерировать событие.
    • Если штрихкод отобразился, и курсор автоматически перепрыгнул на следующую пустую строку ниже (как будто вы нажали клавишу Enter на клавиатуре) — суффикс настроен корректно.

Если тест в Блокноте показал отсутствие суффикса, его необходимо запрограммировать:

  1. Найдите бумажное руководство пользователя от вашего сканера штрихкодов (или скачайте PDF-версию с сайта производителя по модели устройства).
  2. Найдите раздел настроек «Suffix Characters» или «Terminator Suffix».
  3. Последовательно считайте управляющие штрихкоды: сначала код начала программирования (если требуется по инструкции, обычно это Start Configuration), затем штрихкод «Add CR Suffix» (или Enable Enter Suffix) и штрихкод сохранения настроек (End/Save Configuration).
  4. Снова выполните тест в Блокноте. Убедитесь, что курсор перескакивает на новую строку.
  5. После успешного программирования перейдите в 1С в меню Администрирование -> Подключаемое оборудование, откройте карточку вашего сканера и убедитесь, что в поле «Суффикс» указано значение 13 или 'CR'.

---

Решение 2: Настройка таймаута клавиатурного ввода в драйвере 1С

Поскольку сканер подключен в режиме клавиатуры, драйвер 1С должен четко разделять, когда символы вводит кассир руками (например, ищет товар по артикулу), а когда они поступают от аппаратного сканера. Для этого используется параметр «Таймаут» (чувствительность клавиатуры).

Если ваш сканер (особенно часто это бывает с беспроводными Bluetooth/радио-моделями) передает данные пакетами с задержкой, интервал между передачей отдельных символов может превысить установленный в 1С таймаут. В этом случае система посчитает, что данные вводятся вручную, и внешнее событие для РМК не создастся.

Рассмотрим, как скорректировать этот параметр:

  1. Перейдем в раздел Администрирование, далее выберем пункт Подключаемое оборудование.
  2. Откроем карточку нашего сканера и нажмем кнопку Настроить... для вызова параметров драйвера NativeAPI.
  3. Найдем параметр Таймаут клавиатурного ввода (или «Чувствительность», измеряется в миллисекундах). По умолчанию там часто установлено значение 50-70 мс.
  4. Увеличим это значение до 100 мс или 150 мс. Это позволит драйверу корректно объединять символы от медленных беспроводных сканеров в единую посылку.
  5. Запишем настройки и проверим работу сканера в РМК.

---

Решение 3: Разрешение конфликта идентификаторов устройств (InputDevice#)

Ситуация значительно усложняется, когда к одному компьютеру подключено несколько устройств ввода. Например, у вас работают одновременно проводной сканер у кассира и беспроводной для приемки товара в той же базе. Драйвер 1С NativeAPI пытается идентифицировать каждую физическую клавиатуру отдельно.

При первом подключении сканера система присваивает ему внутренний идентификатор, например InputDevice#1. В настройках оборудования 1С жестко прописывается прослушивание именно этого порта/устройства. Если пользователь случайно сбросил сканер или переткнул его в соседний USB-порт компьютера, операционная система Windows может переназначить его на идентификатор InputDevice#2 или InputDevice#3.

В таком случае в тесте подключения (где идет опрос всех доступных устройств) сканер будет работать. Но в РМК 1С будет ожидать сигналы только от старого устройства InputDevice#1, которое сейчас фактически отключено или простаивает.

Для решения этой проблемы выполним следующие действия:

  1. Зайдем в настройки параметров сканера в 1С (через форму Подключаемое оборудование).
  2. В поле выбора устройства ввода попробуем очистить конкретный жестко привязанный порт/идентификатор, установив значение по умолчанию, либо запустим заново процедуру калибровки устройства.
  3. Нажмем кнопку определения параметров устройства и сделаем тестовое сканирование, чтобы драйвер перезаписал текущий активный идентификатор InputDevice# в карточку оборудования.
  4. Запишем изменения.

---

Решение 4: Проверка привязки к Рабочему месту

Иногда после обновлений платформы 1С, изменения имени компьютера в сети или смены учетной записи пользователя Windows, 1С автоматически создает в справочнике новое Рабочее место. Тест подключения оборудования запускается в глобальном контексте настроек, поэтому он видит сканер. Но само Рабочее место кассира запускается строго в контексте текущего (нового) рабочего места, к которому сканер может быть просто не привязан.

Проанализируем этот момент:

  1. Перейдем в настройки подключаемого оборудования.
  2. Обратим внимание на поле Рабочее место в шапке формы. Убедимся, что выбран элемент, соответствующий текущему сеансу работы (обычно он помечен как «Текущее рабочее место»).
  3. Проверим, отображается ли наш настроенный сканер в списке оборудования для этого конкретного рабочего места. Если нет — перенесем его или настроим заново для текущего рабочего места.

---

Кардинальное и наиболее надежное решение: Перевод в режим эмуляции COM-порта

Использование сканера штрихкодов в режиме клавиатуры («в разрыв клавиатуры») в современной розничной торговле несет в себе множество скрытых проблем:

Чтобы навсегда избавиться от проблем с суффиксами, раскладками и таймаутами, переведем сканеры в режим эмуляции COM-порта (USB-VCOM). В этом режиме данные передаются напрямую в порт Windows, минуя фокус клавиатуры.

Алгоритм перевода на эмуляцию COM-порта:

  1. В инструкции к вашему сканеру найдите раздел переключения интерфейсов подключения и считайте штрихкод «USB OEM Scanner», «USB Virtual COM» (или аналогичный по терминологии вашего бренда). Сканер после этого издаст звуковой сигнал и перезагрузится.
  2. Подключите сканер к ПК. Если вы используете современную операционную систему Windows 10/11 x64, она автоматически установит стандартный драйвер виртуального COM-порта (USB-CDC). Для более старых версий Windows может потребоваться скачать виртуальный COM-драйвер с сайта производителя сканера.
  3. Откройте Диспетчер устройств Windows и разверните ветку Порты (COM и LPT). Убедитесь, что там появилось новое устройство (например, Virtual COM Port (COM3)). Запомните номер выделенного порта.
  4. Зайдите в 1С в настройки подключаемого оборудования. В карточке сканера измените тип подключения с клавиатурного устройства на порт COM3 (укажите ваш номер порта из диспетчера устройств).
  5. В параметрах подключения выберите порт и нажмите «Тест подключения». При успешном считывании штрихкода драйвер 1С сам автоматически определит и зафиксирует необходимые суффиксы.

При использовании режима эмуляции COM-порта драйвер 1С NativeAPI мгновенно реагирует на любое сканирование во всех открытых формах РМК, независимо от того, где установлен фокус ввода, и какая раскладка клавиатуры сейчас активна у кассира.

← На главную