Настройка торгового оборудования в среде 1С часто преподносит сюрпризы специалистам по автоматизации и системным администраторам. Особенно это актуально для классических конфигураций на обычных формах, таких как «1С:Управление торговлей 10.3» (УТ 10.3). В этой статье мы подробно разберем проблему, с которой сталкиваются пользователи при попытке подружить беспроводной сканер штрихкода Atol SB2103 Plus с УТ 10.3, когда устройство работает в режиме эмуляции клавиатуры, но драйвер 1С отказывается видеть этот интерфейс.
Проанализируем типичную ситуацию: сканер отлично считывает штрихкоды в текстовый редактор («Блокнот»), но при попытке настройки в 1С через стандартную обработку обслуживания 1с сканер штрихкода (модель Сканер штрихкода общий) в списке доступных портов отображаются только COM-порты (COM1, COM2 и т.д.). Клавиатурный порт в настройках просто отсутствует. Выясним причину этой проблемы и рассмотрим по шагам несколько эффективных способов ее решения.
Первая и самая распространенная причина, почему в поле «Номер порта» отсутствуют клавиатурные интерфейсы — это особенности конкретного релиза используемого драйвера. В определенных версиях драйвера 1С:Сканер штрихкода разработчики убирали прямую поддержку клавиатурного ввода, переориентируя систему на работу исключительно с COM-портами. При этом последние релизы конфигурации УТ 10.3 и обновленные обработки обслуживания могут некорректно взаимодействовать со слишком новыми библиотеками.
Для решения этой проблемы выполним откат драйвера к стабильной и проверенной версии:
1С:Сканер штрихкода версии 8.1.7.5 (или более раннюю стабильную версию 8.0.x). Именно в этих версиях библиотека корректно работает с клавиатурным портом на операционных системах семейства Windows.1с сканер штрихкода.При использовании этого метода перехват данных будет осуществляться на уровне драйвера, и 1С будет генерировать стандартное внешнее событие при каждом сканировании.
Работа сканера в режиме клавиатуры (USB-HID) имеет существенные недостатки: пользователю необходимо постоянно контролировать фокус ввода (курсор должен находиться в строго определенном поле или документе), а при быстрой работе или высокой загрузке процессора ПК отдельные символы штрихкода могут теряться. Самым профессиональным и надежным решением является перевод беспроводного сканера Atol SB2103 Plus в режим виртуального COM-порта (Virtual COM).
В этом режиме сканер работает независимо от фокуса ввода и раскладки клавиатуры. 1С перехватывает данные мгновенно через механизм внешнего события. Разберем этот процесс подробно:
VCOM driver или EasyCOM Driver). Установим его на рабочий компьютер.Version V5.8 из оригинальной инструкции к сканеру. На экране компьютера отобразится текущая версия ПО устройства.Virtual COM Port) и операционная система назначила ему номер (например, COM3).9600. Теперь сканирование будет вызывать предопределенную процедуру ВнешнееСобытие.Рассмотрим пример кода, с помощью которого платформа 1С обрабатывает такое внешнее событие в модуле управляемой или обычной формы:
Процедура ВнешнееСобытие(Источник, Событие, Данные)
// Обработка сигнала от сканера штрихкодов в режиме COM-порта
Если ПолучитьСерверТО().ПроверитьСобытиеТО(Источник, Событие, Данные) map Тогда
Штрихкод = СокрЛП(Данные);
// Вызываем процедуру поиска номенклатуры по штрихкоду
ОбработатьВводШтрихкода(Штрихкод);
КонецЕсли;
КонецПроцедуры
Если по какой-то причине установить специализированные драйверы невозможно, мы можем настроить сканер для работы напрямую через клавиатурный интерфейс. По умолчанию, когда сканер считывает штрихкод в режиме клавиатуры, он просто имитирует быстрый последовательный ввод символов. Чтобы конфигурация 1С поняла, что осуществляется именно сканирование, а не ручной ввод с клавиатуры, используется горячая клавиша F7.
Для реализации этой схемы необходимо выполнить следующие действия:
SB1103 физически не подойдут к линейке SB2103 Plus).CR (ASCII-код 13).CR).Когда суффикс настроен корректно, при нажатии кнопки F7 на клавиатуре открывается стандартное модальное окно «Ввод штрихкода». Сканер считывает штрихкод, передает его в открывшееся текстовое поле и в конце посылает суффикс 13 (нажатие Enter). Окно автоматически закрывается, инициируя поиск товара в базе данных.
Посмотрим на пример кода, который имитирует вызов окна ввода штрихкода принудительно (костыль с F7):
Процедура КнопкаНажатиеF7()
// Ручной вызов окна ввода штрихкода в обычных формах
ФормаВвода = ПолучитьФорму("ОбщаяФорма.ВводШтрихкода");
ФормаВвода.РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс;
Результат = ФормаВвода.ОткрытьМодально();
Если ЗначениеЗаполнено(Результат) Тогда
ОбработатьВводШтрихкода(Результат);
КонецЕсли;
КонецПроцедуры
Если вам обязательно нужно использовать сканер в режиме клавиатуры, но при этом вы хотите получать полноценное внешнее событие без использования горячих клавиш вроде F7, идеальным решением будет установка «АТОЛ: Драйвер устройств ввода» версии 6.5.3.99.
Важное предупреждение: Не пытайтесь устанавливать более новые версии драйверов АТОЛ (версий 8.х, 9.х или 10.х) для клавиатурных сканеров. Начиная с последующих версий, этот драйвер стал платным. В демонстрационном (бесплатном) режиме работы новые драйверы накладывают искусственную задержку в 10 секунд на передачу каждого считанного штрихкода, что делает невозможной работу кассира или кладовщика.
Версия 6.5.3.99 — последняя полностью бесплатная и безлимитная версия драйвера, отлично совместимая с операционными системами Windows 7, 8 и 10.
Разберем по шагам алгоритм настройки через этот драйвер:
6.5.3.99.#13 в конце).ATOLInput.epf (ее можно найти на диске ИТС или в каталоге шаблонов установленной конфигурации УТ в папке TradeWareEpf).13.Этот способ гарантирует стабильный перехват клавиатурных нажатий сканера Atol SB2103 Plus, преобразуя их во внешнее событие 1С на любой версии платформы.