Сканирование DataMatrix в мобильной 1С без ТСД: свой Android-сканер на Google ML Kit через Intent

06.11.26

Интеграция - Сканер штрих-кода

Маркировка заставляет сканировать DataMatrix, а штатный сканер мобильной 1С делает это медленно и через раз. Сторонний сканер на ZXing выручал, пока поставщики не стали печатать коды хуже: потёртые и недопечатанные этикетки перестали читаться. Я не нашёл готового сканера, который читает такие коды и умеет отдавать результат в 1С через Intent, поэтому написал свой - QRazyScan на базе Google ML Kit. Он сразу открывает камеру и по умолчанию ищет только DataMatrix. Сам фокусируется и приближает, читает код под любым углом и стабильно работает даже на бюджетных смартфонах. В статье: предыстория проблемы; сравнение ZXing и ML Kit; простая схема интеграции; готовый код вызова из 1С

Привет, сообщество! Хочу поделиться подходом, который помог заставить обычный Android-смартфон быстро и стабильно сканировать коды маркировки DataMatrix в мобильной 1С без покупки ТСД. Идея простая: вместо штатного сканера платформы используется свое небольшое Android-приложение на Google ML Kit, которое 1С вызывает через Intent и получает от него считанный код. В статье — как я к этому пришел, как устроена связка с обеих сторон и что показала эксплуатация.

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

 

Почему DataMatrix  - это боль

С приходом обязательной маркировки («Честный знак», «Электронный знак» и т. п.) сканирование DataMatrix стало обязательной частью учета. При этом код капризный:

• Емкий: помимо GTIN и серийного номера несет криптохвост — данных много, модули мелкие.

• Требовательный: нужны хорошее разрешение и четкий фокус.

• Неудобно расположен: бликующая пленка, мятые коробки, скошенные углы упаковок.

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

 

От штатного сканера 1С к ZXing

Штатный механизм работы с камерой в мобильной 1С с использованием команды 

СредстваМультимедиа.ПоказатьСканированиеШтрихКодов()

на практике оказался ненадежен для Datamatrix: сканирование долгое, результат непредсказуем, а иногда не распознаются даже идеально напечатанные коды. Когда курьеру или кладовщику нужно "пикнуть" сотню позиций, это ощутимо тормозит работу.

Первое решение было: стороннее приложение-сканер на открытой библиотеке ZXing, вызываемый из 1С через Android Intent, о котором прочел в одной из статей. Суть заключается в том, чтобы на телефон дополнительно установить приложение, которое содержит intent-filter, по которому можно вызвать сканирование из 1С. Такой intent-filter = "com.google.zxing.client.android.SCAN" поддерживает приложение Binary eye. Его удалось найти в результате анализа различных сканеров для Android. И какое-то время связка работала без претензий. Потом у части поставщиков упало качество печати, и доля нераспознанных кодов резко выросла. Начались жалобы работников склада на нераспознанные коды маркировки. Приходилось перепечатывать коды маркировки на своих принтерах и наклеивать их на товары.

В результате анализа обнаружил:

• Принтер слегка недопечатал — код не читается.

• Этикетку потерли при транспортировке — тоже.

При этом многие другие сканеры из Google Play такие коды читали без проблем. Они явно использовали не только Zxing. Мне оставалось найти тот, который умеет отдавать результат в 1С.

Помню, как вечерами сидел и разбирал AndroidManifest.xml разных сканеров в надежде найти заветный intent-filter, который можно было бы дернуть из 1С. Перелопатил немало приложений, но подходящего так и не нашел. И в какой-то момент пришла мысль: а что, если сделать самому? Так я открыл Android Studio и взялся за попытку создать свою утилиту под мобильную 1С.

 

Суть подхода

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

  1. Мобильное приложение на 1С вызывает Activity сканера через Intent с заранее известным действием (action).
  2. Сканер сразу открывает камеру и распознает код через доступную библиотеку.
  3. Результат возвращается в 1С в дополнительных данных Intent, и пользователь снова оказывается на форме 1С.

Вся "тяжелая" работа с камерой и распознаванием уходит в нативный Android-код, а интеграция с 1С остается стандартной — без внешних компонент и больших доработок.

Обмен идет через стандартный механизм Android Intent. В общих чертах выглядит таким образом:

 

 

Под капотом: Google ML Kit

В качестве движка я выбрал бесплатный Google ML Kit, а конкретно Google code scanner (GmsBarcodeScanning). Анализируя чужие приложения, я увидел, что многие популярные сканеры используют, кроме коммерческих библиотек, и эту технологию. Разница с ZXing заметная; к тому же сам ZXing находится в режиме поддержки (maintenance mode) и активно не развивается.

Вот небольшая сравнительная таблица Zxing и Google ML Kit:

 

Критерий ZXing Google ML Kit
Распознавание Классические алгоритмы: грязь, блики и дефекты печати сбивают с толку ML-модели прямо на телефоне, без интернета: читают затертые и помятые коды
Фокусировка Зависит от камеры и прошивки конкретного телефона Быстрый фокус и автозум, если код далеко
Угол съемки Телефон нужно держать ровно над кодом Любое положение: боком, вверх ногами, по диагонали
Железо Качество упирается в камеру Стабильно работает даже на бюджетных смартфонах

 

Android-сторона

Код своего приложения я не публикую, но сама конструкция несложная, и ее несложно повторить. По сути, сканеру нужно всего три вещи:

• Activity с intent-filter на свое действие (action) в AndroidManifest.xml — именно по нему 1С находит сканер на телефоне.

• Запуск Google code scanner (библиотека play-services-code-scanner) с ограничением на формат DataMatrix.

• Возврат результата: считанный код кладется в дополнительные данные Intent под заранее оговоренным ключом (у меня это SCAN_RESULT), после чего Activity закрывается и управление возвращается в 1С.

Пара практических решений, которые стоит заложить сразу:

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

• Только нужный формат. Когда ML Kit заранее знает, что искать DataMatrix, алгоритмы не перебирают остальные форматы (EAN, Code 128 и т. д.) и работают быстрее. Универсальный режим для сканирования всех штрихкодов можно вынести в настройки приложения, я так и сделал.

 

Код на стороне 1С

Интеграция укладывается в десяток строк. Пример обработчика кнопки сканиварования:

НаКлиенте
Процедура СканироватьDataMatrix(Команда)
    #Если МобильноеПриложениеКлиент Или МобильныйКлиент Тогда
 
        Запуск = Новый ЗапускПриложенияМобильногоУстройства();
        // Действие Intent, на которое откликается QRazyScan
        Запуск.Действие = "com.skrobot.QRazy.SCAN_BARCODE";
 
        // Android находит QRazyScan на смартфоне и запускает его
        РезультатОтвета = Запуск.Запустить(Истина);
 
        // Код 0 означает успех (Activity.RESULT_OK)
        Если РезультатОтвета = 0 Тогда
 
            // Читаем результат по ключу SCAN_RESULT
            Штрихкод = Запуск.ДополнительныеДанные.Получить("SCAN_RESULT");
 
            Если ЗначениеЗаполнено(Штрихкод) Тогда
                ОбработатьПолученныйШтрихкод(Штрихкод);
            КонецЕсли;
 
        КонецЕсли;
 
    #КонецЕсли
КонецПроцедуры

 

Результаты

Приложение уже около года работает на рабочих смартфонах нескольких десятков или даже сотен сотрудников, которые ежедневно сканируют сотни кодов.

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

• Надежность. Интеграция через Intent работает без сбоев. QRazyScan изолирован от 1С, проблем с памятью не замечено, а делает приложение ровно одну вещь — быстро считывает код.

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

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

Изначально сканер распространялся как обычный .apk-файл, который ставили пользователям вручную. Уже спустя несколько месяцев стало любопытно пройти закрытое тестирование и опубликовать его в Google Play. Поэтому, я привел код в порядок и прошел процедуру публикации в Google Play, чтоб упростить распространение и подвердить надежность проверками Google. Сейчас приложение называется QRazyScan: оно бесплатное, без рекламы и регистрации, и его можно взять как есть QRazyScan в Google Play, если не хочется собирать свой сканер

Регулярного развития не обещаю: обновлять буду по мере необходимости — например, если очередная версия Android что-то сломает.

Но главная цель статьи — поделиться самой идеей. Сегодня при желании вполне можно собрать подобный инструмент под свои задачи. Хотя путь от идеи до приложения, которое каждый день сканирует сотни кодов маркировки и прошло публикацию в Google Play, — это все-таки отдельная история.

Буду рад, если этот опыт будет кому-то полезен.

Спасибо, что дочитали! Всем кодов, которые читаются с первого раза🙂

Вступайте в нашу телеграмм-группу Инфостарт

DataMatrix маркировка Честный знак сканирование штрихкодов мобильная платформа 1С мобильное приложение 1С Android Intent ЗапускПриложенияМобильногоУстройства Google ML Kit ZXing сканер штрихкодов QRazyScan

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Сканер штрих-кода Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

У вас возникал вопрос - Как быстро и правильно выполнить приемку товара в торговой точке? Как минимизировать ошибки при сборке заказа клиента? Текущая разработка способна помочь в решении данных проблем. Её назначение - проверка с помощью сканера штрих кода поступления и реализации товаров, заказов клиентов, заказов поставщикам, расходных и приходных ордеров, перемещений и возвратов.

5185 руб.

29.07.2020    46902    248    194    

186

Мобильная разработка Сканер штрих-кода Терминал сбора данных 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Сбор заказов, инвентаризация, проверка ценников, просмотр полной информации об остатках и ценах со смартфона Онлайн - все это содержит в себе решение 1С "Штрихкод-информер" (штрих-код чекер). Отправка данных со смартфона выполняется либо напрямую в открытую форму документа, отсканировав QR-код, либо в общую корзину учетной системы, не подходя к компьютеру. Кассир или оператор сможет просмотреть список присланных данных и загрузить в любую форму, поддерживающую работу с ТСД. Для работы с мобильным приложением требуется опубликовать HTTP-сервис из поставляемого расширения.

3050 руб.

03.12.2018    72917    250    108    

191

Сканер штрих-кода Терминал сбора данных Мобильная разработка Монитор заказов Оптовая торговля Розничная торговля Ценообразование, анализ цен Разработчик Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Простой мобильный ТСД (терминал сбора данных) сканер для 1С для смартфонов на iOS и Android, не требующий сложных настроек и установки дополнительных программ. Обмен между Вашей 1С и мобильным приложением осуществляется через облачный сервис и расширение конфигурации. Работает с конфигурациями УТ 11, ERP, КА2, Розница 2, Розница 3, УНФ 1.6, УНФ 3.0. Полнофункциональный демо-доступ для своей конфигурации можно запросить в настройках мобильного приложения - все необходимое придет на почту автоматически. Решение предназначено для считывания штрихкодов, а не для их создания и печати.

3050 руб.

22.04.2019    124914    739    207    

391

Сканер штрих-кода Пользователь 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Стандартные конфигурации ERP, КА, УТ 11 позволяют работать с штрихкодированием серий. Есть только одно суровое ограничение – на упаковке должна быть этикетка для номенклатуры и отдельно для серии. Во многих случаях это критически неудобно.

24400 руб.

19.04.2021    31068    70    59    

80

Учет ОС и НМА Сканер штрих-кода Терминал сбора данных Логистика, склад и ТМЦ 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Приложение Инвентаризация ОС и ТМЦ предназначено для инвентаризации основных средств и товарно-материальных ценностей, закреплённых за конкретным материально ответственным лицом или складом. В конфигурации 1С:Бухгалтерии 3.0 отсутствуют возможности генерации и работы со штрих-кодами для основных средств. Приложение позволяет генерировать и обрабатывать штрих-коды как для основных средств, так и для товарно-материальных ценностей (материалы, товары). В новом релизе появилась возможность работы с фотографиями объектов учета.

07.07.2023    7015    4    alfanika    2    

8

Сканер штрих-кода Бухгалтер Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Теперь практически все торговые документы в конфигурации 1С Бухгалтерия 3.0 (ПРОФ / КОРП) и в конфигурации 1С Бухгалтерия сельскохозяйственного предприятия 3.0 поддерживают подбор товара по штрих-коду. Можно пользоваться сканером штрихкода или подбирать штрих-код вручную. В основных печатных формах документов выводится колонка Штрихкод. Для менеджеров по продажам будет удобным дополнительный отчет Прайс-лист с остатками и штрих-кодом.

7320 руб.

28.07.2020    33368    88    37    

67

Сканер штрих-кода Разработчик Пользователь 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Управленческий учет Абонемент ($m)

Программа-эмулятор сканера штрихкода для 1С: вводит любые коды — включая коды маркировки «Честный знак» с разделителем GS — через эмуляцию клавиатурного ввода, без физического сканера. Три способа ввода: вручную, пакетно из txt-файла (с любыми разделителями), по фото с выделением и зумом нужной области (распознаёт QR, DataMatrix, линейные штрихкоды). Отправляет данные в любое активное окно — 1С, браузер, блокнот — с автоматическим переключением фокуса на нужное окно. Настраиваемый способ передачи GS-символа под особенности конкретной базы. Выручает при поломке или отсутствии сканера, ускоряет разовый ввод и тестирование обмена с маркировкой.

2 стартмани

30.09.2026    669    4    Ermuk_1c    2    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. akR00b 26 09.11.26 08:30 Сейчас в теме
Отличное решение, + однозначно. Приложение не смотрел (нет под рукой андроида), оно только для DataMatrix?
3. nick_ne_znik 3 09.11.26 10:36 Сейчас в теме
(1) Добрый день! По умолчанию - для Datamatrix, чтобы ускорять распознавание штрихкода, алгоритмы ML Kit так работают быстрее. Если нужно сканировать все типы штрихкодов, посмотрите в настройках приложения, там есть настройка "Распознавать все форматы".
2. SergeyTerentyev 09.11.26 09:55 Сейчас в теме
Добрый день. QRazyScan мне ничего не отсканировал. Что я делаю не так?
Для отправки сообщения требуется регистрация/авторизация