Как обеспечить работу сканера штрихкодов на ТСД M3 Mobile SL20 в мобильном клиенте 1С

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

При внедрении мобильных решений на складе часто возникает ситуация, когда на одной модели ТСД (например, Newland) всё работает «из коробки», а на другой (например, M3 Mobile SL20) мобильный клиент 1С запускается, но игнорирует нажатие кнопки сканирования. Разберем подробно, как настроить взаимодействие между «железом» Android-устройства и платформой 1С (поможет мобильное рабочее место кладовщика на ТСД), чтобы данные штрихкода попадали в базу корректно.

Выясним причину: почему 1С «не видит» сканер

Проанализируем механику работы мобильного устройства. ТСД может передавать считанные данные в приложения двумя основными способами:

  1. Эмуляция клавиатуры (KeyStroke): Сканер имитирует быстрый ввод текста. В этом случае данные попадают в то поле, где сейчас стоит фокус (курсор). Если фокуса нет или поле не предназначено для ввода, 1С ничего не обработает.
  2. Вещание (Intent Broadcast): Сканер отправляет системное сообщение (интент) внутри Android. Мобильный клиент 1С «слушает» такие сообщения и генерирует ВнешнееСобытие.

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

Настройка системной утилиты Scan Emulation на M3 Mobile

Посмотрим на настройки самого ТСД. На устройствах M3 Mobile SL20 за работу сканера отвечает предустановленное приложение (обычно оно называется Scan Emulation или находится в разделе Settings -> Scan Settings). Выполним следующие шаги для перевода устройства в режим вещания:

  1. Откроем утилиту настройки сканера на ТСД.
  2. Найдем пункт Output Mode (Режим вывода) и вместо значения Keyboard или KeyStroke установим Intent Broadcast.
  3. Перейдем к настройкам параметров интента (Intent Settings). Нам необходимо убедиться, что строки идентификаторов совпадают с теми, которые ожидает 1С.
  4. В поле Intent Action укажем стандартное значение для M3: com.m3mobile.scanner.action.BARCODE или android.intent.ACTION_DECODE_DATA.
  5. В поле Intent Extra (ключ данных) укажем: com.m3mobile.scanner.extra.DATA или просто data.

Важный нюанс: Обязательно проверим настройки префиксов и суффиксов. Если в настройках ТСД включена автоматическая вставка символа переноса строки (Enter) или табуляции, это может «сбивать» обработчик 1С. Рекомендуется отключить все лишние символы в настройках утилиты сканирования.

Программная настройка в 1С: Мобильный клиент

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

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

Используем метод СредстваТелефонии.ПолучитьИдентификаторКлиента() для получения уникального ID устройства. Это позволит нам привязать конкретный физический ТСД к «Рабочему месту» в базе 1С.

Рассмотрим пример кода, который можно разместить в модуле управляемого приложения для инициализации оборудования:


Процедура ПриНачалеРаботыСистемы()
    #Если МобильныйКлиент Тогда
        ИдентификаторУстройства = СредстваТелефонии.ПолучитьИдентификаторКлиента();
        // Логика поиска или создания рабочего места по ИдентификаторУстройства
        УстановитьСоответствиеТСД(ИдентификаторУстройства);
    #КонецЕсли
КонецПроцедуры

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

Когда настройки ТСД (Intent Action) и настройки 1С синхронизированы, платформа начнет генерировать событие ВнешнееСобытие (удобно через контроль складских операций с помощью сканера или ТСД). Нам нужно правильно его обработать в форме документа или обработки.

Посмотрим на пример обработки полученных данных:


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

Использование Библиотеки подключаемого оборудования (БПО)

Если ваша конфигурация построена на базе БПО, проверьте, установлен ли драйвер «1С:Сканер штрихкода (NativeApi)». В мобильном клиенте этот драйвер является универсальным интерфейсом.

Разберем последовательность действий в интерфейсе 1С:

  1. Зайдем в раздел Администрирование -> Подключаемое оборудование.
  2. Создадим новый экземпляр оборудования с типом «Сканер штрихкода».
  3. В настройках выберем драйвер «1С:Сканер штрихкода (NativeApi)».
  4. В параметрах подключения выберем режим работы, соответствующий настройкам ТСД (в нашем случае это должен быть перехват Intent).

Диагностика и типичные ошибки

Если после всех манипуляций данные все равно не приходят, проанализируем следующие моменты:

Таким образом, для успешного подключения M3 Mobile SL20 необходимо свести настройки аппаратной части (Intent Action) и программной части 1С (Рабочее место и БПО) к единому стандарту вещания данных.

← На главную