Как убрать уведомление об ошибке подключения оборудования при отключении сканера в 1С

Программист 1С v8.3 (Управляемые формы) Торговля и дистрибуция
← На главную

При работе в розничной торговле или на складе часто возникает необходимость физически отключать сканеры штрихкодов от компьютера (например, чтобы перенести устройство на другое рабочее место или освободить USB-порт). Однако в решениях на платформе 1С:Предприятие это часто оборачивается проблемой. При каждом запуске программы или открытии рабочего места кассира система пытается инициализировать устройство. Если сканер отключен, на экране появляется назойливое предупреждение: "При подключении оборудования произошла ошибка: Не удалось подключить устройство... Не удалось занять устройство. Проверьте настройки порта. (999)".

Стандартный совет технической поддержки — зайти в настройки подключаемого оборудования и снять галочку использования — крайне неудобен на практике. В таком случае при каждом обратном подключении сканера пользователю придется заново заходить в настройки, активировать устройство и перезапускать программу. В этой статье мы подробно рассмотрим, как решить эту проблему раз и навсегда двумя профессиональными методами: программным подавлением ошибки через механизм расширений и переводом сканера в альтернативный режим работы.

Проанализируем ситуацию и разберем по шагам оба варианта.


Способ 1. Программное подавление ошибки через Расширение конфигурации

Один из участников обсуждения на форуме предложил найти место вызова ошибки в конфигураторе и закомментировать его. Это рабочее решение, но прямое изменение типовой конфигурации имеет огромный минус: при первом же обновлении базы ваши изменения будут затерты, либо вам придется снять конфигурацию с поддержки.

Чтобы избежать проблем с обновлениями, мы применим современный и безопасный механизм — Расширения конфигурации. Современная Библиотека подключаемого оборудования (БПО) выполняет асинхронное подключение устройств. Ошибка с кодом 999 выводится в стандартных процедурах завершения подключения.

Рассмотрим подробнее, как перехватить и "молча" подавить это уведомление в кодовой базе 1С:

  1. Откройте базу в режиме Конфигуратор.
  2. Перейдите в меню Конфигурация — Расширения конфигурации.
  3. Создайте новое расширение (например, с именем ПодавлениеОшибокОборудования), снимите для него галочки "Безопасный режим" и "Защита от опасных действий" в свойствах.
  4. В дереве метаданных основной конфигурации найдите общий модуль МенеджерОборудованияКлиент.
  5. Кликните по нему правой кнопкой мыши и выберите команду Добавить в расширение.
  6. В модуле расширения перехватите процедуру ПодключитьОборудованиеЗавершениеПоУмолчанию, которая отвечает за обработку результатов подключения. Мы используем аннотацию &Вместо, чтобы переопределить стандартное поведение системы.

Напишем программный код, который будет проверять текст возникшей ошибки. Если в описании ошибки содержатся указания на сканер штрихкода или код ошибки 999, система просто проигнорирует её и продолжит работу без вывода модального окна на экран. В противном случае (если сломался фискальный регистратор или эквайринг) ошибка будет выведена штатно.

Пример реализации кода в расширении:


&НаКлиенте
&Вместо("ПодключитьОборудованиеЗавершениеПоУмолчанию")
Процедура ИмяРасш_ПодключитьОборудованиеЗавершениеПоУмолчанию(РезультатВыполнения, Параметры)
    
    // Проверяем наличие ошибки в результате выполнения операции
    Если РезультатВыполнения.Свойство("ОписаниеОшибки") И ЗначениеЗаполнено(РезультатВыполнения.ОписаниеОшибки) Тогда
        
        ТекстОшибки = ВРег(РезультатВыполнения.ОписаниеОшибки);
        
        // Анализируем ключевые слова, чтобы подавить ошибку только для сканера
        Если Найти(ТекстОшибки, "СКАНЕР") <> 0 
           Или Найти(ТекстОшибки, "999") <> 0 
           Или Найти(ТекстОшибки, "НЕ УДАЛОСЬ ЗАНЯТЬ УСТРОЙСТВО") <> 0 Тогда
            
            // Записываем информацию в технологический журнал базы для администратора
            ЗаписьЖурналаРегистрации("ПодключениеОборудования",
                УровеньЖурналаРегистрации.Предупреждение,
                ,
                ,
                "Подавлена ошибка подключения сканера: " + РезультатВыполнения.ОписаниеОшибки);
                
            // Выходим из процедуры "тихо", не показывая предупреждение пользователю
            Возврат; 
            
        КонецЕсли;
        
    КонецЕсли;
    
    // Для всех остальных штатных ситуаций и других видов оборудования вызываем стандартный обработчик
    ПродолжитьВызов(РезультатВыполнения, Параметры);
    
КонецПроцедуры

Используя этот метод, вы избавляете кассиров и операторов от необходимости постоянно закрывать лишние диалоговые окна, сохраняя при этом конфигурацию на полной поддержке.


Способ 2. Изменение режима работы самого сканера (без программирования)

Выясним причину возникновения ошибки 999. Она появляется из-за того, что ваш сканер штрихкодов настроен на работу в режиме эмуляции COM-порта (Virtual COM). При таком подходе драйвер 1С при каждом запуске обращается к конкретному порту операционной системы (например, COM3). Если устройство вытащили из разъема, порт исчезает, драйвер не может его занять и генерирует системный сбой.

Если вы не хотите вносить изменения в программный код 1С, вы можете перенастроить сам сканер штрихкодов. Перевод устройства в режим эмуляции клавиатуры (USB-Keyboard) полностью решает проблему.

Разберем этот процесс по шагам:

  1. Найдите инструкцию (руководство пользователя) к вашей модели сканера. Обычно в ней содержится лист с сервисными штрихкодами.
  2. Последовательно считайте сканером следующие штрихкоды из инструкции:
    • Сброс к заводским настройкам (Set All Default).
    • Перевод в режим клавиатуры (USB Keyboard Emulation или Enable USB HID Keyboard).
  3. Подключите сканер к компьютеру. Теперь при сканировании штрихкода в любой текстовый редактор (например, Блокнот) данные должны вводиться так, будто вы быстро набираете их руками на клавиатуре.
  4. Откройте 1С, перейдите в раздел Администрирование — Подключаемое оборудование.
  5. В настройках вашего сканера измените порт подключения с конкретного COM-порта на значение "Клавиатура" (в некоторых драйверах этот параметр называется Клавиатурный ввод).
  6. Для того чтобы штрихкоды корректно обрабатывались системой автоматически (без предварительного нажатия кнопки поиска F7 на клавиатуре), настройте суффикс. В параметрах оборудования в 1С укажите суффикс 13 (символ перевода каретки Carriage Return / Enter). На самом сканере также должен быть запрограммирован суффикс "Enter" (обычно он активен по умолчанию после сброса на заводские настройки).

Результат работы: При клавиатурном режиме работы драйвер 1С не опрашивает порты компьютера при старте системы. Если физически вытащить сканер из разъема USB, программа не заметит его отсутствия и продолжит работать без ошибок. При обратном подключении сканер мгновенно готов к работе без перезапуска сеанса 1С.


Другие частые причины ошибки 999 (полезно знать)

Иногда ошибка 999: Не удалось занять устройство возникает даже тогда, когда сканер физически подключен к компьютеру и кабель исправен. Рассмотрим две скрытые технические проблемы, о которых важно помнить администратору:

Используя предложенные методики, вы сможете полностью избавить пользователей от раздражающих системных уведомлений и сделать работу с торговым оборудованием в 1С максимально комфортной и бесперебойной.

← На главную