В разработке мобильных приложений на платформе "1С:Предприятие" часто возникает задача считывания информации со штрихкодов или QR-кодов. Это может быть необходимо для идентификации товаров на складе, сотрудников, документов или для быстрой оплаты. Разберемся, можно ли реализовать такой функционал стандартными средствами платформы и как это сделать правильно. При необходимости можно взять за основу готовую конфигурацию мобильного приложения для сканирования штрихкодов.
Ответ — да, можно. Платформа 1С предоставляет встроенные инструменты для работы с камерой устройства в режиме сканера. Рассмотрим по шагам, как вызвать интерфейс сканирования и обработать полученный результат.
Основным инструментом для работы с мультимедийными возможностями устройства, включая сканер, является глобальный объект СредстваМультимедиа. Он доступен только на мобильном клиенте, поэтому весь код, связанный с ним, необходимо обрамлять директивами препроцессора #Если МобильноеПриложениеКлиент ... #КонецЕсли.
Процесс сканирования состоит из двух основных этапов:
Давайте проанализируем пример кода, который решает эту задачу.
Шаг 1. Вызов интерфейса сканирования
Для начала создадим команду, например, на форме, по нажатию на которую будет активироваться камера. В обработчике этой команды мы вызовем метод СредстваМультимедиа.ПоказатьСканированиеШтрихКодов().
Этот метод принимает несколько важных параметров:
ОписаниеОповещения для процедуры, которая будет вызвана после успешного сканирования.ОписаниеОповещения для процедуры, которая будет вызвана, если пользователь закроет интерфейс сканера, не считав код.ТипШтрихКода.Двухмерный. Это важный параметр, который может ускорить распознавание, так как камере не придется искать все возможные типы кодов.Посмотрим на пример процедуры, которая инициирует сканирование:
&НаКлиенте
Процедура СканироватьКомплектовщика(Команда)
#Если МобильноеПриложениеКлиент Тогда
// Создаем описание оповещения для процедуры, которая обработает результат
ОбработчикСканирования = Новый ОписаниеОповещения("ОбработкаСканироватьКомплектовщика", ЭтотОбъект);
// Создаем описание оповещения для процедуры, которая сработает при закрытии окна сканера
ОбработчикЗакрытия = Новый ОписаниеОповещения("ОбработкаЗакрытияИнтерфейса", ЭтотОбъект);
// Вызываем сам сканер
СредстваМультимедиа.ПоказатьСканированиеШтрихКодов(
"Считайте QR-код комплектовщика",
ОбработчикСканирования,
ОбработчикЗакрытия,
ТипШтрихКода.Двухмерный);
#КонецЕсли
КонецПроцедуры
Шаг 2. Обработка результата сканирования
После того как камера успешно распознает QR-код, платформа вызовет процедуру, которую мы указали в ОбработчикСканирования. Эта процедура-обработчик должна быть экспортной и иметь строго определенный набор параметров.
Рассмотрим полную процедуру обработки с бизнес-логикой из примера:
&НаКлиенте
Процедура ОбработкаСканироватьКомплектовщика(Штрихкод, Результат, Сообщение, ДополнительныеПараметры) Экспорт
#Если МобильноеПриложениеКлиент Тогда
// После получения результата рекомендуется сразу закрыть интерфейс сканера
СредстваМультимедиа.ЗакрытьСканированиеШтрихКодов();
#КонецЕсли
// Проверяем, был ли код успешно считан
Если Результат = Истина Тогда
// Код успешно считан, его значение находится в параметре "Штрихкод"
// Далее идет бизнес-логика: проверка типа кода, запросы к серверу и т.д.
// Например, проверка, что это именно QR-код сотрудника
ВидПечатнойФормы = ОбщийСервер.ОКПолучитьВидПечатнойФормыJSON(Штрихкод);
Если ВидПечатнойФормы <> "Сотрудник" Тогда
#Если МобильноеПриложениеКлиент Тогда
// Подаем звуковой сигнал об ошибке
СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение(,Истина);
#КонецЕсли
ПоказатьПредупреждение(,"ОШИБКА ШТРИХКОДА: Это не QR-код комплектовщика");
Возврат;
КонецЕсли;
// Если все хорошо, сохраняем результат
ПредставлениеQRКомплектовщика = Штрихкод;
// ... дальнейшая логика работы с полученными данными ...
Иначе
// Считывание не удалось (пользователь отменил или произошла ошибка)
#Если МобильноеПриложениеКлиент Тогда
СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение(,Истина);
#КонецЕсли
ПоказатьПредупреждение(,"QR-код не считан");
КонецЕсли;
КонецПроцедуры
Ключевые моменты в обработчике:
Результат: Содержит Истина, если сканирование прошло успешно, и Ложь в противном случае. Всегда проверяйте его значение.Штрихкод: Если Результат = Истина, этот параметр будет содержать текстовое представление считанных данных из QR-кода.СредстваМультимедиа.ЗакрытьСканированиеШтрихКодов(): Важно программно закрыть окно сканера после получения результата, чтобы вернуть пользователя в основной интерфейс приложения.СредстваМультимедиа.ВоспроизвестиЗвуковоеОповещение(): Полезная функция для обратной связи с пользователем. Можно воспроизводить стандартные звуки или звуки об ошибке, чтобы пользователь понимал результат операции, не глядя на экран.Хотя стандартный сканер отлично подходит для многих задач, стоит учитывать некоторые нюансы, особенно при работе в интенсивном режиме (например, на складе).
При сканировании сложных или специфических кодов, таких как сигаретные марки Data Matrix (система "Честный ЗНАК"), камера обычного смартфона может оказаться неэффективной. Пользователи отмечают, что встроенный в платформу 1С сканер может уступать по скорости и качеству распознавания специализированным приложениям. Для комплексной работы со штрихкодами и маркировкой подойдёт готовое мобильное решение для ТСД и смартфонов.
Использование камеры смартфона оправдано:
Использование терминала сбора данных (ТСД) на Android рекомендуется:
В заключение, стандартные средства платформы "1С:Предприятие" предоставляют мощный и удобный механизм для сканирования QR-кодов. Для большинства типовых задач его возможностей более чем достаточно. Однако для промышленных решений и работы с системами обязательной маркировки стоит рассмотреть интеграцию мобильного приложения со специализированными терминалами сбора данных для достижения максимальной эффективности.