Как восстановить работу встроенного сканера ТСД в 1С:ERP 2.5.11 и выше?

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

При переходе на новые релизы 1С:ERP Управление предприятием (начиная с версии 2.5.11.86 и выше, включая 2.5.12) многие специалисты столкнулись с неприятной ситуацией: встроенные сканеры терминалов сбора данных (ТСД), которые годами работали через стандартный драйвер 1С:Сканеры штрихкода (NativeApi), внезапно перестают функционировать. Проблема проявляется либо в невозможности установить внешнюю компоненту (сообщение «ВК не предназначена для мобильного клиента»), либо в «тихом» игнорировании отсканированных данных, когда событие ОбработкаОповещения в формах 1С просто не вызывается.

В этой статье мы подробно разберем, почему это происходит, проанализируем технические изменения в библиотеке подключаемого оборудования (БПО) и рассмотрим пошаговые алгоритмы восстановления работоспособности оборудования на базе ОС Android.

Выясняем причину сбоя: конфликт БПО и мобильной платформы

Проанализируем ситуацию с технической стороны. В релизах ERP 2.5.11 произошел качественный скачок в развитии Библиотеки подключаемого оборудования. Новая логика БПО ориентирована на использование современных методов взаимодействия с мобильной платформой. Основная причина отказа NativeApi заключается в несоответствии манифеста драйвера требованиям обновленной БПО и архитектуре процессоров новых ТСД.

Кроме того, выяснилось, что новая БПО требует мобильную платформу версии не ниже 8.3.23. Если вы продолжаете использовать мобильный клиент версии 8.3.22, возникает программный конфликт: компонента загружается, но методы обратного вызова (callback), отвечающие за передачу штрихкода в 1С, блокируются на уровне ядра платформы.

Решение 1: Обновление платформы и сборка собственного клиента

Первым делом нам необходимо исключить версию о несовместимости платформенных механизмов. Выполним следующие шаги:

  1. Обновим мобильную платформу на ТСД до версии 8.3.23.68 или выше.
  2. Вместо использования типового приложения из Google Play, которое может не соответствовать версии вашей ERP, подготовим собственную сборку мобильного клиента через Сборщик мобильных приложений 1С.
  3. При сборке обязательно включим в состав поставки необходимые внешние компоненты. Это позволит «жестко» зафиксировать рабочую версию драйвера внутри APK-файла, исключая ошибки динамической загрузки макетов Драйвер1СУстройстваВводаNative.

Решение 2: Переход на технологию Android Intent (Рекомендуется)

Если обновление платформы не помогло или Native-драйвер продолжает вести себя нестабильно, перейдем к самому надежному «промышленному» способу — использованию механизма Android Intent. Этот метод позволяет мобильному клиенту 1С «слушать» сообщения от операционной системы Android, которые отправляет служба сканирования ТСД, минуя промежуточные драйверы 1С.

Рассмотрим настройку на примере ТСД KAICOM и аналогичных моделей под управлением Android:

Шаг 1. Настройка системного приложения на ТСД.

Найдем на терминале приложение Scanner (или Scan Settings). Нам нужно изменить режим вывода данных:

Шаг 2. Настройка в 1С:ERP.

Теперь подготовим конфигурацию к приему этих данных. Проанализируем настройки в справочнике ПодключаемоеОборудование:

  1. Создадим новый экземпляр оборудования с видом Сканер штрихкода.
  2. В качестве драйвера выберем специализированный драйвер, поддерживающий работу с Intent (например, от компании «Клеверенс» или «Scan City»), либо воспользуемся стандартным механизмом БПО для приема внешних событий.
  3. В параметрах подключения укажем те же значения Action и Extra, которые мы ввели в настройках Android-приложения.

Работа с кодом: Обработка внешнего события

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


&НаКлиенте
Процедура ВнешнееСобытие(Источник, Событие, Данные)
    
    Если Источник = "СканерШтрихкода" Тогда
        // Проанализируем полученные данные
        Штрихкод = СокрЛП(Данные);
        
        ПараметрыСобытия = Новый Структура;
        ПараметрыСобытия.Вставить("Штрихкод", Штрихкод);
        
        // Вызываем стандартную обработку БПО
        ОбработатьШтрихкод(ПараметрыСобытия);
    КонецЕсли;
    
КонецПроцедуры

Важно помнить, что при работе через мобильный клиент событие может приходить в ОбработкаОповещения, если используется стандартная библиотека подключаемого оборудования. Проверьте, что в коде формы вызван метод ПодключитьСканерШтрихкода(), иначе мобильное устройство не будет перехвачено системой.

Решение 3: Эмуляция клавиатуры (Keyboard Wedge)

Разберем ситуацию, когда бизнес-процесс требует немедленного запуска, а настройка Intent затягивается. В этом случае используем режим Keyboard Wedge. В этом режиме сканер работает как обычная USB-клавиатура: он «печатает» штрихкод в то поле, где сейчас находится фокус.

Чтобы 1С понимала, что ввод данных осуществлен именно сканером, а не пользователем вручную, выполним следующие действия:

  1. В настройках сканера на ТСД добавим Префикс (например, символ #).
  2. В 1С настроим событие формы так, чтобы при появлении первого символа # фокус автоматически переносился в поле поиска, а после получения всего штрихкода (завершается символом Enter или Суффиксом) инициировался поиск товара.

Важное замечание: Этот метод является резервным, так как он чувствителен к раскладке клавиатуры и текущему фокусу на форме, однако он полностью независим от внешних компонент NativeApi.

Резюме и рекомендации

Проанализировав проблему, мы видим, что «поломка» сканера в 1С:ERP 2.5.11/12 — это следствие эволюции БПО и повышения требований к мобильной платформе. Для стабильной работы рекомендуем:

Следование этим инструкциям позволит вам восстановить автоматизацию складских операций и избежать простоя из-за технических несовершенств драйверов.

← На главную