Отличается ли разработка мобильного приложения 1С для ТСД на Android от разработки под обычный смартфон?

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

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

Архитектурный выбор: Мобильное приложение против Мобильного клиента

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

  1. Мобильное приложение (МП). Это полностью автономная база данных SQLite, разворачиваемая непосредственно на ТСД. МП требует разработки собственной структуры метаданных на мобильном устройстве и написания сложных механизмов синхронизации с центральной базой (обычно через HTTP-сервисы или Web-сервисы). Этот вариант незаменим в условиях полного отсутствия или сильной нестабильности беспроводной связи на складе.
  2. Мобильный клиент (МК). Это тонкий клиент для мобильных платформ, который работает напрямую с вашей центральной базой (например, 1С:ERP, 1С:УТ или 1С:УНФ) в режиме реального времени. Логика интерфейса описывается на стороне основного сервера, а ТСД выступает лишь средством визуализации. Это значительно ускоряет разработку и развертывание обновлений, но требует стабильного покрытия Wi-Fi сети.

Проанализируем ситуацию: если ваш склад имеет стабильную беспроводную сеть, выбор в пользу Мобильного клиента сбережет сотни часов разработки. Если же работа предполагается в удаленных точках, экранированных ангарах или на выезде — придется проектировать полноценное Мобильное приложение с локальным кэшированием данных.

Интеграция со встроенным сканером штрихкодов: почему эмуляция клавиатуры — это путь к ошибкам

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

  1. Режим эмуляции клавиатуры (Keyboard Wedge). В этом режиме сканер имитирует быстрое нажатие клавиш на клавиатуре ТСД. Как только луч считывает штрихкод, цифры просто «впечатываются» в активное текстовое поле на экране.
  2. Режим широковещательных сообщений (Broadcast Intent). При сканировании операционная система Android генерирует скрытое системное событие (Intent), содержащее тип штрихкода и его текстовое значение. Наше приложение 1С перехватывает это событие в фоновом режиме.

Выясним причину, почему настоятельно рекомендуется отказаться от режима эмуляции клавиатуры в пользу Broadcast Intent. Во-первых, при эмуляции клавиатуры фокус ввода обязательно должен находиться в конкретном текстовом поле. Если кладовщик случайно нажмет мимо поля или на экране появится модальное окно, считанный штрихкод запишется не туда или сотрет важные данные. Во-вторых, скорость работы при посимвольной эмуляции крайне низкая, а при включенной русской раскладке символы штрихкода могут необратимо искажаться. В-третьих, работа через системные события позволяет обрабатывать штрихкод асинхронно в процедуре ОбработкаВнешнегоСобытия, независимо от того, какая форма сейчас открыта и где находится курсор.

Техническая реализация перехвата штрихкодов в 1С

Рассмотрим подробнее, как реализовать перехват широковещательных сообщений Android (Broadcast Intents) в коде 1С. Для этого нам понадобится внешняя компонента, умеющая подписываться на системные события Android. Ниже приведен пример реализации с использованием универсальной внешней компоненты для работы с широковещательными сообщениями:


ИмяСобытия = "scan.rcv.message";
Если ПодключитьВнешнююКомпоненту("ОбщийМакет.Component", "Broadcasts", ТипВнешнейКомпоненты.Native) Тогда
    Компонента = Новый("AddIn.Broadcasts.UniversalBroadcast");
    Компонента.УстановитьПараметр("FilterName", ИмяСобытия);
    ШаблонДанных = Компонента.ПолучитьШаблонОписанияДанных();        
    barcode = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонДанных, "data", XMLСтрока(Ложь), XMLСтрока(0));        
    Компонента.УстановитьПараметр("CaptureData", barcode);
КонецЕсли;    

Если Не Компонента.Подключить(НомерУстройства) Тогда
    ЗаписатьЛогСобытий("Не удалось подключить компоненту сканера!");
КонецЕсли;

Разберем этот код по шагам. Переменная ИмяСобытия содержит строку идентификатора интента (Intent action), которую мы прописываем в системных настройках самого ТСД (в утилите сканирования, которая предустановлена производителем устройства, например, DataWedge у Zebra или аналоги у Honeywell, Urovo, Atol). Мы переименовываем стандартное системное действие в "scan.rcv.message". Параметр "data" указывает, в каком именно поле структуры сообщения (Intent string extra) ТСД передает сам текст штрихкода. После успешного подключения компонента начинает транслировать все отсканированные данные напрямую в глобальный модуль 1С, вызывая предопределенную процедуру:


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

Стоит отметить, что в современных реалиях фирма «1С» предлагает отличную альтернативу самописным или сторонним внешним компонентам — Библиотеку подключаемого оборудования для мобильных приложений (БПО для МП). В ее состав входит штатный native-драйвер «1С:Сканер штрихкода», который настраивается аналогичным образом через параметры широковещательного сообщения в интерфейсе 1С, избавляя вас от необходимости вручную регистрировать DLL и писать низкоуровневый код инициализации.

Решение проблемы с аппаратными кнопками ТСД

Многие модели ТСД оснащены физической клавиатурой (цифровой или буквенно-цифровой). Разработчики часто сталкиваются с тем, что мобильная платформа 1С «из коробки» не видит нажатия специфических аппаратных клавиш (например, функциональных кнопок F1-F12, боковых желтых кнопок активации сканера или клавиши Backspace). Посмотрим на варианты решения этой проблемы:

Эксплуатационные особенности работы ТСД на складе

Проектируя решение для ТСД, крайне важно выйти из «офисного» режима тестирования и учесть суровые реалии работы складской инфраструктуры:

  1. Бесшовный Wi-Fi (Роуминг). Складские помещения часто имеют сложную геометрию, экранирующие металлические стеллажи и зоны затухания сигнала. ТСД постоянно переключается между базовыми станциями. Стандартный офисный Wi-Fi может вызывать задержки при переключении до нескольких секунд, из-за чего сессия Мобильного клиента 1С будет завершаться аварийно. Сеть предприятия должна поддерживать стандарты быстрого роуминга 802.11r, 802.11k и 802.11v, а в коде 1С необходимо предусматривать мягкую обработку сетевых исключений.
  2. Агрессивное энергосбережение Android. Начиная с версии Android 6.0 и выше, операционная система очень жестко борется за живучесть батареи. Если кладовщик отложил устройство на 10 минут, ОС может полностью завершить процесс 1С или отключить Wi-Fi модуль. При настройке оборудования необходимо обязательно вносить приложение 1С в список исключений энергосбережения (Doze Mode) и запрещать оптимизацию батареи для данного процесса.
  3. Эргономика и специфика UI/UX. Помните, что экран ТСД обычно небольшой (4-5 дюймов), а плотность пикселей может быть далека от флагманских смартфонов. Формы должны быть предельно контрастными, элементы управления — крупными (чтобы по ним можно было попасть пальцем в рабочих перчатках). Избегайте мелких табличных частей, выводите ключевую информацию (наименование товара, количество к отбору, текущую ячейку) огромным шрифтом.

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

← На главную