Как настроить работу сканера штрихкодов в мобильном приложении 1С:ERP на ТСД и исправить ошибку отключенной функциональности мультимедиа

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

При внедрении мобильных решений на базе 1С:ERP для терминалов сбора данных (ТСД) специалисты часто сталкиваются с аппаратными ограничениями и программными блокировками. Типичная ситуация: вы запускаете мобильный клиент на устройстве под управлением Android, открываете документ "Заказ клиента", но при попытке сканирования или открытия формы программа выдает критическую ошибку. В сообщении говорится, что функциональность "Камера, Микрофон, Библиотека музыки, Библиотека картинок и видео, Воспроизведение аудио и вибрация" отключена в мобильном приложении. При этом в настройках самой операционной системы Android все разрешения для приложения выданы корректно.

В данной статье мы подробно разберем, как устранить эту ошибку, правильно настроить программную часть в конфигураторе и подружить аппаратный сканер ТСД (на примере популярной модели Urovo i6300) с типовой конфигурацией 1С:ERP Управление предприятием.

Причина ошибки: Настройка используемой функциональности

Проанализируем ситуацию: почему 1С блокирует доступ к "железу", если Android его разрешает? Дело в том, что в платформе 1С:Предприятие существует собственный механизм контроля безопасности для мобильных решений. Если в свойствах конфигурации явно не указано, что приложение будет использовать камеру или мультимедиа, мобильный клиент блокирует эти вызовы на уровне ядра, даже не пытаясь обратиться к ресурсам ОС.

Для решения этой проблемы выполним следующие действия:

  1. Откроем основную конфигурацию в Конфигураторе на сервере.
  2. Перейдем в корень дерева метаданных (самая верхняя строка с названием вашей конфигурации).
  3. Вызовем контекстное меню правой кнопкой мыши и выберем пункт "Свойства".
  4. В открывшейся панели найдем раздел "Используемая функциональность мобильного приложения" (иногда он называется "Требуемые разрешения").
  5. Нажмем на кнопку выбора (три точки) и в открывшемся списке установим флажки напротив пунктов Использование мультимедиа и Сканирование штрихкодов.

Важный момент: Если вы используете типовое решение, для внесения этих изменений потребуется включить возможность редактирования конфигурации. После сохранения настроек и обновления базы данных (клавиша F7), мобильный клиент автоматически подтянет новые разрешения при следующем подключении. Пересобирать apk-файл в большинстве случаев не требуется, если вы используете стандартный мобильный клиент из магазина приложений.

Программный вызов сканирования через камеру

Если на вашем устройстве нет аппаратного лазерного сканера (например, используется обычный смартфон), или вы хотите использовать камеру ТСД как резервный вариант, рассмотрим код для вызова стандартного сканера 1С. Проанализируем пример использования объекта СредстваМультимедиа:


#Если МобильноеПриложениеКлиент Тогда
    Если НЕ СредстваМультимедиа.ПоддерживаетсяСканированиеШтрихКодов() Тогда
        ВызватьИсключение НСтр("ru='Сканирование штрихкодов не поддерживается'");
        Возврат;
    КонецЕсли;
    
    ОбработчикСканирования = Новый ОписаниеОповещения("ОбработкаСканирования", ЭтаФорма);
    СредстваМультимедиа.ПоказатьСканированиеШтрихКодов(
        НСтр("ru='Наведите камеру на штрихкод'"), 
        ОбработчикСканирования, , 
        ТипШтрихКода.Все
    );
#КонецЕсли

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

Настройка аппаратного сканера ТСД через Intent

Для профессиональной работы на ТСД (например, Urovo i6300) использование камеры неудобно. Нам нужно, чтобы 1С реагировала на нажатие физических кнопок сканирования по бокам устройства. Для этого рассмотрим настройку механизма Intent в Android и его перехват в 1С.

На ТСД Urovo необходимо зайти в системное приложение Scanner (Настройки сканирования) и установить следующие параметры:

После этого в коде 1С необходимо инициализировать работу с оборудованием. Разберем пример подключения через МенеджерОборудованияКлиент, который входит в состав БПО (Библиотеки подключаемого оборудования):


&НаКлиенте
Процедура ПриОткрытии(Отказ)
    ОписаниеОшибки = "";
    // УникальныйИдентификатор - идентификатор формы
    // ОборудованиеУстройствоВвода - ссылка на настроенный экземпляр сканера
    Если НЕ МенеджерОборудованияКлиент.ПодключитьОборудованиеПоИдентификатору(
            УникальныйИдентификатор, 
            ОборудованиеУстройствоВвода, 
            ОписаниеОшибки) Тогда
        Сообщить("Ошибка подключения сканера: " + ОписаниеОшибки);
    КонецЕсли;
КонецПроцедуры

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

&НаКлиенте
Процедура ПередЗакрытием(Отказ, ЗавершениеРаботы, ТекстПредупреждения, СтандартнаяОбработка)
    МенеджерОборудованияКлиент.ОтключитьВсеОборудование();
КонецПроцедуры

Интеграция с внешней компонентой RS Core

Для устройств Urovo часто применяется специализированная внешняя компонента RS Core (от RightScan). Она обеспечивает наиболее стабильную связь между аппаратной кнопкой сканера и платформой 1С. Рассмотрим состав такой компоненты:

  1. KBEmu — позволяет эмулировать ввод с клавиатуры (используется редко).
  2. IO — операции ввода/вывода.
  3. Модули поддержки 1С через механизмы GCM или ВК (Внешняя компонента).

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

Рекомендации по отладке

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

Таким образом, правильная комбинация настроек в Конфигураторе (разрешения мультимедиа), корректная настройка Intent-сообщений на самом ТСД и использование методов БПО позволяют создать надежное рабочее место на базе 1С:ERP.

← На главную