В процессе работы с торговым оборудованием в среде 1С:Управление нашей фирмой (УНФ) системные администраторы и программисты часто сталкиваются с ситуацией, когда сканер штрихкода (например, популярный Datalogic 2100) ведет себя нестабильно. Типичный сценарий: сканер успешно проходит тест в настройках, работает в РМК (рабочем месте кассира), но после перезагрузки программы или смены пользователя «отваливается». При этом повторный вход в настройки оборудования и нажатие кнопки «Тест устройства» магическим образом возвращает его в рабочее состояние до следующего закрытия программы.
Рассмотрим подробнее, почему это происходит и какие шаги необходимо предпринять для окончательного решения проблемы.
Выясним причину, по которой сканер работает после ручного теста, но не работает при старте. Проанализируем ситуацию: в современных конфигурациях на платформе 1С:Предприятие 8.3 часто используется функционал «Начальной страницы», куда выводится форма РМК для ускорения работы кассира. Однако именно здесь кроется ловушка.
Разберем механизм загрузки системы. При запуске 1С формы начальной страницы начинают создаваться и открываться практически одновременно с инициализацией глобальных модулей системы. В ряде случаев форма РМК пытается выполнить процедуру ПодключитьОборудование() в тот момент, когда подсистема ПодключаемоеОборудование еще не завершила загрузку параметров пользователя или не успела проинициализировать кэш драйверов. В результате команда на захват COM-порта уходит «в пустоту».
Решение: Как показывает практика участников обсуждения, самым простым и стабильным способом является отказ от использования РМК на «Начальной странице». Рассмотрим алгоритм действий:
Это гарантирует, что к моменту открытия формы все механизмы захвата портов будут полностью готовы к работе.
Если специфика бизнеса требует именно автоматического открытия формы, и первый способ не подходит, разберем более технический вариант решения. Посмотрим на опыт разработчиков, которые сталкивались с аналогичными проблемами при подключении ККМ и сканеров.
Иногда драйверу устройства требуется принудительный вызов проверки состояния, чтобы он «проснулся» и корректно захватил виртуальный COM-порт. Проанализируем программный метод решения. В модуле формы РМК, в процедуре ПриОткрытии, можно добавить вызов функции теста оборудования. Если стандартное подключение возвращает отказ, попробуем выполнить подключение повторно после небольшой задержки.
Пример логики для доработки конфигурации (в процедуре подключения оборудования):
// Попытка принудительной инициализации оборудования
РезультатПодключения = МенеджерОборудованияКлиент.ПодключитьОборудование(УстройствоСсылка);
Если Не РезультатПодключения Тогда
// Если с первого раза не взлетело, пробуем выполнить программный "тест"
// Это заставляет компоненту переподключиться к порту
МенеджерОборудованияКлиент.ВыполнитьТестУстройства(УстройствоСсылка);
// Повторная попытка подключения
МенеджерОборудованияКлиент.ПодключитьОборудование(УстройствоСсылка);
КонецЕсли;
Важный момент: иногда требуется вызвать процедуру тестирования дважды, так как на первый запрос драйвер может вернуть ошибку занятости порта, а на второй — успешно инициализироваться.
Рассмотрим ситуацию, когда под одним пользователем (администратором) всё работает, а под другим — нет. Проблема может заключаться в правах доступа к веткам реестра Windows, где хранятся настройки эмуляции COM-порта, или в правах на запись во временные папки, куда 1С распаковывает внешние компоненты (драйверы).
Выясним, что нужно проверить в операционной системе:
Datalogic USB-COM Driver версии 6.3.0 или выше. Установку необходимо выполнять строго от имени администратора системы.Root Hub снимем флажок «Разрешить отключение этого устройства для экономии энергии». Это предотвратит «засыпание» сканера в моменты простоя программы.HKEY_CURRENT_USER\Software\1C\1Cv8\3\Common\Equipment. Если у пользователя ограничены права на чтение/запись этой ветки, настройки могут не применяться корректно при старте сеанса.Посмотрим на настройки самой компоненты внутри 1С. Для сканеров Datalogic рекомендуется использовать драйвер «1С:Сканеры штрихкода (NativeApi)». Однако здесь есть тонкость: драйвер ожидает определенного сигнала окончания передачи данных.
Проанализируем настройки устройства:
CR (возврат каретки) или LF (перевод строки).Подводя итог, разберем пошаговый план действий для стабилизации работы сканера:
ПодключитьОбработчикОжидания) перед первым обращением к сканеру.Использование комплексного подхода — от настройки интерфейса до программной корректировки — позволит навсегда забыть о «бубнах» при подключении торгового оборудования.