Многие пользователи 1С сталкиваются с неудобством при работе на кассе: после каждого сканирования товара приходится либо нажимать кнопку "Считать штрих-код" (или клавишу F7), либо подтверждать ввод нажатием кнопки "ОК" в появившемся окне. В условиях большого потока покупателей это существенно замедляет работу. Наша задача — реализовать режим «как в супермаркете», когда кассир просто считывает коды один за другим, а строки автоматически появляются в табличной части документа.
Рассмотрим подробно, почему это происходит и как настроить систему для бесперебойной автоматической работы. Разберем ситуацию с точки зрения как аппаратных настроек сканера, так и программных манипуляций в самой 1С.
Проанализируем ситуацию. Если ваша программа требует нажатия дополнительных кнопок, значит, сканер работает в режиме эмуляции клавиатуры (Keyboard Wedge). Для 1С такой сканер выглядит как человек, который очень быстро вводит цифры штрих-кода. Проблема в том, что программе нужно «понять», когда ввод закончился и когда нужно начинать поиск товара в базе.
Выясним причину, по которой 1С не реагирует автоматически:
Если вы используете сканер «в разрыве клавиатуры», нам нужно заставить его самостоятельно «нажимать» клавишу Enter после каждого сканирования. В технической документации это называется добавлением суффикса возврата каретки (CR).
Рассмотрим по шагам, как это сделать:
Start Configuration).CR (ASCII код 13) или LF (код 10). В некоторых моделях это один штрих-код под названием "Add Enter Suffix".End Configuration).После этого, если вы откроете обычный блокнот и сканируете товар, курсор должен автоматически перепрыгнуть на новую строку. Это верный признак того, что 1С теперь сможет «увидеть» завершение ввода и закрыть окно поиска товара самостоятельно.
Это наиболее правильный и профессиональный метод интеграции. В этом режиме сканер не «печатает» цифры в активное поле, а посылает сигнал напрямую в драйвер 1С. Программе становится неважно, где находится курсор и открыто ли окно ввода — как только луч считал код, срабатывает процедура ОбработкаВнешнегоСобытия.
Посмотрим на алгоритм настройки:
COM3) был присвоен устройству.1С:Сканеры штрихкода) и укажем наш COM3.Преимущество этого метода в том, что 1С мгновенно получает готовый код и сразу запускает алгоритм поиска номенклатуры без лишних экранных форм.
Для программистов важно понимать, как 1С обрабатывает эти данные «под капотом». Если используется режим COM-порта или настроенный драйвер, система генерирует внешнее событие. Рассмотрим пример кода, который обычно отвечает за это в форме документа или РМК:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
Если Событие = "Barcode" Тогда
Штрихкод = СокрЛП(Данные);
// Вызываем функцию поиска товара и добавления в ТЧ
ОбработатьШтрихкод(Штрихкод);
КонецЕсли;
КонецПроцедуры
Если же вы вынуждены работать через «мини-форму» ввода (как упоминалось в сообщении 17 форума), можно реализовать автоматическое закрытие этой формы. Для этого в свойствах поля ввода штрих-кода установите флаг "Автоматический выбор незаполненного" или используйте обработчик изменения текста, который будет проверять длину введенной строки и программно нажимать кнопку ОК.
Разберем ситуацию с современными конфигурациями на платформе 8.3. В управляемых формах работа со сканером строится на механизме оповещений. Убедитесь, что в форме документа включено свойство ИспользоватьСканерШтрихкода.
Посмотрим на типичные ошибки:
~). Проверьте в тесте устройства в 1С, что именно приходит от сканера. Если есть лишние знаки, их нужно либо отсечь в настройках драйвера, либо перепрограммировать сканер.Virtual COM лишен этого недостатка, поэтому он всегда предпочтительнее.Проанализировав все способы, мы рекомендуем следующий порядок действий: сначала попробуйте перевести сканер в режим COM-порта. Если это невозможно (дешевые модели без поддержки CDC), настройте суффикс Enter и убедитесь, что в 1С выбрано устройство "1С:Сканеры штрихкода (NativeApi)". Это обеспечит ту самую скорость работы, которую мы видим в супермаркетах.