При автоматизации рабочих мест кассиров в конфигурации «1С:Управление торговлей», редакция 10.3, специалисты часто сталкиваются со специфическими трудностями при подключении торгового оборудования. Наиболее популярными проблемами являются конфликт драйверов торгового оборудования, вызывающий программные ошибки, и необходимость постоянного нажатия клавиши F7 на клавиатуре для активации поля ввода штрихкода.
В этой статье мы подробно разберем, как решить эти проблемы на примере популярного сканера Honeywell Voyager 1450g. Мы проанализируем причины возникновения ошибки ТаймаутCOM, разберемся с распределением виртуальных портов в операционной системе Windows и настроим сканер так, чтобы он мгновенно считывал как штучные, так и весовые товары в автоматическом режиме.
Давайте рассмотрим ситуацию, когда при тестировании подключенного оборудования во внешней обработке обслуживания 1С возникает ошибка следующего вида:
{ВнешняяОбработка.СканерШтрихкода.МодульОбъекта(263)}: Поле объекта не обнаружено (ТаймаутCOM)
Эта ошибка указывает на то, что код обработки обслуживания пытается обратиться к свойству ТаймаутCOM объекта драйвера, но установленная в операционной системе библиотека (драйвер) этого свойства попросту не имеет. Такое несоответствие возникает из-за рассогласования версий:
1CScanOPOSScan_v2.epf), разработанный под старые версии драйвера ScanOpos.dll (например, версии 8.0.X), где свойства таймаута назывались иначе или отсутствовали.Разберем три пути решения этой проблемы:
Способ 1. Исправление кода обработки в Конфигураторе (Рекомендуемый для разработчиков)
Если у вас нет возможности или желания подбирать совместимые версии файлов, мы можем исправить код обработки обслуживания самостоятельно, добавив безопасный обход вызова этого свойства через конструкцию проверки:
Попытка
Объект.Драйвер.ТаймаутCOM = ?(Объект.Параметры.ТаймаутCOM = Неопределено, 5, Объект.Параметры.ТаймаутCOM);
Исключение
// Если свойство не поддерживается драйвером, просто игнорируем его настройку
ЗаписьЖурналаРегистрации("ПодключениеСканера", УровеньЖурналаРегистрации.Предупреждение, , , "Свойство ТаймаутCOM не поддерживается текущим драйвером.");
КонецПопытки;
Способ 2. Обновление обработки обслуживания торгового оборудования
Необходимо скачать свежую версию обработки обслуживания сканера штрихкода с официального портала поддержки пользователей «1С:ИТС» и обновить ее в справочнике «Обработки обслуживания торгового оборудования» в самой 1С.
Способ 3. Откат версии драйвера
Если вы хотите использовать стандартную обработку без изменений, установите более старую и стабильную версию драйвера «1С:Сканер штрихкода» (например, версию 8.0.15.1), в которой структура свойств полностью соответствует ожиданиям конфигурации УТ 10.3.
Рассмотрим ситуацию, когда при подключении одинаковых моделей сканеров на разных кассовых компьютерах операционная система Windows автоматически присваивает им один и тот же виртуальный COM-порт (например, COM3). Это абсолютно нормально, если кассы работают локально и независимо друг от друга.
Однако, если ваши кассиры работают в режиме терминального сервера (через RDP-подключение), возникает конфликт адресации проброшенных портов. Чтобы решить эту проблему, выполним следующие шаги:
Honeywell USB Serial Port).COM7 или COM9) и нажмите «ОК» для сохранения изменений.После этого на терминальном сервере в настройках торгового оборудования 1С для конкретного рабочего места укажите именно этот переназначенный порт.
Основное неудобство при работе со сканером в режиме эмуляции клавиатуры заключается в том, что для считывания штрихкода кассиру приходится каждый раз нажимать клавишу F7 на клавиатуре, чтобы открыть модальное окно ввода штрихкода в 1С. Мы можем обойти это ограничение двумя надежными способами.
Прежде всего, проанализируем, как 1С УТ 10.3 различает штучный и весовой товар. Программе не требуется настраивать разные префиксы для разных типов товаров на самом сканере. Определение типа штрихкода происходит на уровне логики самой системы 1С:
28 или 29).2800045003504), 1С автоматически распознает его как весовой, находит товар с кодом 00045 и подставляет вес 350 грамм (значение 00350).Для того чтобы считывание происходило автоматически в фоне, настроим сканер Honeywell 1450g одним из двух методов.
Этот метод заключается в том, что мы программируем сканер выдавать определенную последовательность сигналов при каждом сканировании: сначала виртуальное нажатие клавиши F7, затем передача символов штрихкода, а затем нажатие клавиши Enter (символ перевода каретки CR).
Выполним настройку по шагам:
F7. В кодировке Honeywell для клавиатурного ввода префикс настраивается вставкой специального управляющего кода клавиши. Вы можете выбрать клавишу F7 из визуального списка клавиатурных команд в интерфейсе утилиты EZConfig. В шестнадцатеричном выражении (Hex) управляющий символ эмуляции клавиши F7 для устройств Honeywell часто передается последовательностью \x16\x54 или специальным кодом 99 1C (в зависимости от выбранного режима передачи).CR (значение Hex: 0D, код клавиши Enter).Теперь при сканировании любого штрихкода сканер сам посылает команду F7, открывая окно ввода в 1С, мгновенно вставляет туда считанные цифры и закрывает окно нажатием Enter. Это работает идеально как для весовых, так и для штучных позиций номенклатуры.
Если вы не хотите программировать память сканера, мы рекомендуем задействовать штатный современный механизм интеграции 1С. Это более надежный программный метод, исключающий системные сбои клавиатурного ввода.
Выполним следующие шаги по настройке:
Enter).Keyboard).13 (десятичный код клавиши Enter / CR). Поле префикса оставьте пустым.При такой настройке драйвер 1С перехватывает быстрый последовательный ввод символов от сканера на низком уровне, идентифицирует его как внешнее событие считывания и мгновенно передает в активную форму документа. Вся обработка происходит в фоне, окно по клавише F7 больше не открывается, а товар моментально появляется в табличной части!