При настройке торгового оборудования в «1С:Розница» (особенно в релизах линейки 2.3 и выше) технические специалисты часто сталкиваются со следующей проблемой. В форме настроек при нажатии кнопки «Тест подключения» сканер отлично считывает штрихкоды, и данные отображаются на экране. Однако при переходе в Рабочее место кассира (РМК) или в любой документ (например, «Поступление товаров») система полностью игнорирует сканирование. При этом, если принудительно установить курсор в текстовое поле поиска или ввода, штрихкод туда вводится, но автоматического поиска товара не происходит.
В этой статье мы подробно проанализируем причины такого поведения оборудования и разберем по шагам, как настроить сканер для стабильной работы в РМК с использованием драйвера 1С:Сканеры штрихкода (NativeAPI).
---
Для начала разберем внутренний механизм обработки сигналов торгового оборудования в платформе 1С. Окно «Тест подключения» работает в режиме «сырого» перехвата данных. Оно просто фиксирует любые символы, которые драйвер успел поймать от клавиатурного буфера или виртуального COM-порта, и сразу выводит их на экран.
Но для того чтобы 1С отреагировала на сканирование непосредственно в форме РМК или в документе, драйвер оборудования должен сформировать полноценное «Внешнее событие» (External Event). Если внешнее событие не сгенерировано, логика РМК просто не запустится, и данные не будут обработаны. Чтобы драйвер NativeAPI понял, что перед ним именно штрихкод, а не случайный быстрый ввод пользователя с обычной клавиатуры, ему необходимы четкие ориентиры начала и окончания передачи данных. Основным таким ориентиром служит суффикс возврата каретки (CR).
---
Самая частая причина «немого» сканера в РМК — отсутствие суффикса в самом сканирующем устройстве. Это происходит, когда сканер сбрасывают к заводским настройкам или случайно считывают настроечный код из руководства пользователя.
При работе в режиме эмуляции клавиатуры («в разрыв клавиатуры») сканер имитирует очень быстрое нажатие кнопок. Чтобы 1С поняла, что передача штрихкода завершена, сканер в конце отправки должен послать управляющий символ «Enter». На языке разметки данных это символ возврата каретки — CR (Carriage Return, ASCII-код 13) или перевод строки — LF (Line Feed, ASCII-код 10).
Проверим работу суффикса по шагам:
Если тест в Блокноте показал отсутствие суффикса, его необходимо запрограммировать:
13 или 'CR'.---
Поскольку сканер подключен в режиме клавиатуры, драйвер 1С должен четко разделять, когда символы вводит кассир руками (например, ищет товар по артикулу), а когда они поступают от аппаратного сканера. Для этого используется параметр «Таймаут» (чувствительность клавиатуры).
Если ваш сканер (особенно часто это бывает с беспроводными Bluetooth/радио-моделями) передает данные пакетами с задержкой, интервал между передачей отдельных символов может превысить установленный в 1С таймаут. В этом случае система посчитает, что данные вводятся вручную, и внешнее событие для РМК не создастся.
Рассмотрим, как скорректировать этот параметр:
50-70 мс.100 мс или 150 мс. Это позволит драйверу корректно объединять символы от медленных беспроводных сканеров в единую посылку.---
Ситуация значительно усложняется, когда к одному компьютеру подключено несколько устройств ввода. Например, у вас работают одновременно проводной сканер у кассира и беспроводной для приемки товара в той же базе. Драйвер 1С NativeAPI пытается идентифицировать каждую физическую клавиатуру отдельно.
При первом подключении сканера система присваивает ему внутренний идентификатор, например InputDevice#1. В настройках оборудования 1С жестко прописывается прослушивание именно этого порта/устройства. Если пользователь случайно сбросил сканер или переткнул его в соседний USB-порт компьютера, операционная система Windows может переназначить его на идентификатор InputDevice#2 или InputDevice#3.
В таком случае в тесте подключения (где идет опрос всех доступных устройств) сканер будет работать. Но в РМК 1С будет ожидать сигналы только от старого устройства InputDevice#1, которое сейчас фактически отключено или простаивает.
Для решения этой проблемы выполним следующие действия:
InputDevice# в карточку оборудования.---
Иногда после обновлений платформы 1С, изменения имени компьютера в сети или смены учетной записи пользователя Windows, 1С автоматически создает в справочнике новое Рабочее место. Тест подключения оборудования запускается в глобальном контексте настроек, поэтому он видит сканер. Но само Рабочее место кассира запускается строго в контексте текущего (нового) рабочего места, к которому сканер может быть просто не привязан.
Проанализируем этот момент:
---
Использование сканера штрихкодов в режиме клавиатуры («в разрыв клавиатуры») в современной розничной торговле несет в себе множество скрытых проблем:
GS (ASCII 29), без которого проверка маркированной продукции в системе «Честный Знак» вернет ошибку.Чтобы навсегда избавиться от проблем с суффиксами, раскладками и таймаутами, переведем сканеры в режим эмуляции COM-порта (USB-VCOM). В этом режиме данные передаются напрямую в порт Windows, минуя фокус клавиатуры.
Алгоритм перевода на эмуляцию COM-порта:
Virtual COM Port (COM3)). Запомните номер выделенного порта.При использовании режима эмуляции COM-порта драйвер 1С NativeAPI мгновенно реагирует на любое сканирование во всех открытых формах РМК, независимо от того, где установлен фокус ввода, и какая раскладка клавиатуры сейчас активна у кассира.