Конструктор мобильного клиента на Android Simple WMS Client: способ создать полноценный ТСД без мобильной разработки. Большое обновление от 17.01.19

Программирование - Инструментарий

терминал сбора данных ТСД из мобильного телефона штрих-код мобильное приложение Android конструктор распознавание голоса html-строка картинки передача картинки с камеры

79
Simple WMS Client – это визуальный конструктор мобильного клиента для ТСД или обычного телефона на Android. Приложение работает в онлайн режиме через интернет или WI-FI, постоянно общаясь с базой посредством http-запросов. Можно создавать любые конфигурации мобильного клиента с помощью конструктора и обработчиков на языке 1С (НЕ мобильная платформа). Конфигурация передается на клиентское приложение в виде XML. Вся логика приложения и интеграции содержится в обработчиках на стороне 1С в веб-сервисе. Это очень простой способ создать и развернуть клиентскую часть для WMS системы или для любой другой конфигурации 1С (УТ, УПП, ERP, самописной) с минимумом программирования. Например, можно добавить в учетную систему адресное хранение, учет оборудования и любые другие задачи. Приложение умеет работать не только со штрих-кодами, но и с распознаванием голоса от Google. Это бесплатная и открытая система, не требующая обучения, с возможностью быстро получить результат.

Постановка задачи

Системы управления складом (WMS), логистикой и подобные осуществляют процессный подход к управлению в альтернативу документному подходу, который используется в учетных системах. Грубо говоря в учетной системе(например 1С:УТ или ERP) все отталкивается от документа: есть приходная накладная – есть ее аналог в учетной системе. В процессном подходе все не так :например, есть приход паллеты товара – это действие нужно сразу же отразить в системе, т.е. отразить каждую операцию процесса, поэтому такой учет более оперативный и требует автоматизации мобильными терминалами.

Соответственно, работники склада выполняют определенную последовательность действий, которые должны управляться из системы и отражаться в ней. Например работник должен отправиться на определенный адрес (последовательность обхода адресов рассчитывается исходя из топологии склада), обнаружить там паллету, взять определенное количество товара.

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

Таким образом для каждого такого процесса в мобильном клиенте должна быть последовательность экранов, на которых выводятся подсказки, содержатся элементы ввода, контроль ввода и т.д. Эта последовательность далее называется Процессом и для конструирования этих процессов для мобильного клиента и создан этот модуль.

 

Архитектура

 

Во вступлении я назвал эту систему «открытой» вот почему: ничто не ограничивает внедренца в использовании своей логики в приложении, потому что все происходит на стороне 1С в открытом коде. Android-клиент ничего не рассчитывает, ничего не хранит, не осуществляет логических переходов и обработки данных – все это происходит в обработчиках в веб-сервисе. Это абсолютно тонкий клиент, который умеет только отображать и получать/передавать данные от источников ввода. Конфигурация, которая является конструктором и одновременно модулем интеграции также не содержит ограничений.

 

Каждый клиент работает со своей конфигурацией рабочего места (например «Приемка», «Выпуск» и т.д.) содержащей набор процессов. Конфигурация клиента задается в виде строки XML  и передается на клиент в момент открытия приложения: приложение посылает запрос и конфигурация приходит в ответе. Таким образом для того что бы что то поменять у клиента ему достаточно просто перезайти. В принципе конфигурацию можно редактировать и просто в XML но для удобства я сделал редактор в 1С, который автоматизирует создание конфигурации.

 

В редакторе создаются различные конфигурации клиентов (например в демо-базе есть конфигурации для рабочего места «Приемка», «Отгрузка» и «Инвентаризация ОС»). Конфигурации содержат процессы, а процессы состоят из последовательностей экранов и/или циклов. Например это – состав одного из процессов:

В справочнике Экраны задаются визуальные элементы и элементы ввода для каждого шага процесса. Например так:

При этом клиент может отображать значения переменных в визуальных элементах.

Например, на первом экране сканируется штрих/код, а на следующем, показывается товар и расширенное описание товара. Это задается и отображается так:

А вот так на одной картинке выглядит весть процесс вместе. Тут видно что пользователя при запуске встречает стартовый экран, а потом начинается цикл приемки товара, пока пользователь не выйдет. Вот таким примерно образом и создаются все процессы.

Помимо полей ввода и чтения штрихкодов клиент может взаимодействовать с пользователем с помощью диалога вопроса:

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

Архитектура обмена между сервером и клиентом показана на следующей схеме:

Приложение отправляет на сервер запросы при начале и окончании процесса, которые пишутся в регистр сведений. Это нужно для определения статуса занятости клиента перед тем как отправить ему задание при автоматической диспетчеризации (рассылки заданий). Ну и, кроме того, так как фиксируется время начала и окончания процесса, то эти данные можно использовать для построения отчетов от KPI работников (время выполнения различных процессов)

На каждый клиент можно отправлять распоряжения(заказы, задания) с таблицами котрые будут запускать процессы. Это работает не через пуш, а через http-запросы. Вот пример отправки заказа клиента. В результате отправки у пользователя проигрывается звук приема сообщения и возникает диалог приема заказа, если он готов принять то стартует выполнение процесса. Кстати тут еще одни контроль того, занят клиент в данный момент или нет:

Заказ можно получить и по инициативе клиента, через сканирование штрих-кода например или поиск по номеру

Ну и обещанный бонус – распознавание голоса

Пример работы с голосом есть в демо базе. Распознавание голосом может понадобиться в случаях когда штрих коды использовать нельзя. Например, недавно ко мне обратились с учетом номеров шин на транспорте -вот тут то как раз тот случай: штрихкоды на шины в эксплуатации не наклеишь, frid-ы сомнительно. Номер состоит из 6 цифр, и на морозе вбить его затруднительно, а вот проговорить -легко. Точность распознавания товара стремиться к 100%. Даже если чтото не так, то можно переделать.

Еще вариант использования – ввод нового товара, которого нет в базе.

Честно говоря, распознавание от Google в сочетании с такой оберткой -это уже не игрушка а претендент на полноценную замену другим способам идентификации.

Вот как это выглядит:

 

Примеры процессов, реализованные на конструкторе 

 

Инвентаризация ОС

Работа клиента такая: сканируется штрих-код помещения, с сервера подгружается таблица ОС которые должны быть по учету, и цикл из одного действия – сканирования штрих-кода основного средства. В помещении может быть ОС которого нет по учету (принесли из другого помещения). Может чего-то не быть. В общем, все видно по план-факту. В результате в базе заполняется «Инвентаризация ОС» - заполняется колонка «Факт»

Клиент приемки

Клиент участка приемки содержит два процесса: «Приемка по факту» и «Приемка по заказу».. Если нет распоряжения на приемку(Заказа поставщику), но нужно принять  товар, на клиенте выбирается «Приемка по факту», если заказ есть, то «Приемка по заказу». Соответственно в первом случае – создается просто новый документ «Приемка», во втором случае тоже создается приемка, но привязанная к заказу поставщику, кроме того можно смотреть «План-факт» приемки

Клиент отгрузки.

Также в демо базе есть пример рабочего места отгрузки. Там содержится 2 процесса – отгрузка по заказу со сканом и отгрузка с приемом заказа, с сервера. Но в клиенте отображается только один процесс, так как второй-скрытый, его нельзя запустить вручную – только с сервера.

Клиент службы доставки.

Так как приложение работает через веб-сервисы оно может работать не только во внутренней сети, но и через интернет. На этом модуле можно разработать рабочее место курьера который будет отмечать доставку, возвращенные покупателем товары, оплату (сумма оплаты будет рассчитываться от суммы возврата).

Заключение. Описание поставки.

Конфигурация для инвентаризации ОС содержит всего 2 экрана, 2 обработчика и 155 строчек кода. Полноценное рабочее место для проведения инвентаризации было сделано  и готово к работе за 20 минут. Это быстро. Альтернативой могло бы стать: 1. написание мобильного приложения на платформе 1С;2. Мобильный клиент на 1С 3. написание интерфейса  1C+RDP. Но это все делается дольше, кроме того для 1С нужны лицензии и для RDP тоже нужны лицензии, а для приложения - нет. Кроме того, 1С не умеет всего того, что умеет нативное приложение Android. Например сканирование обычный штрихкодов (например EAN-13), на момент написания статьи вызывает большие вопросы.

Данный модуль и клиент предоставляют программисту инструмент котрый можно сравнить с Конвертацией данных: можно писать свой обмен между базами полностью с нуля, а можно воспользоваться КД, чтобы она взяла на себя всю инфраструктуру, оставив программисту работу с непосредственно логикой. Вопрос выбора данного инструмента – это вопрос экономии времени и денег.

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

Для работы на устройство нужно поставить приложение Simple WMS:

В архиве находится база с примерами, в базе – конфигурация с модулем для объединения и подробная инструкция по внедрению с картинками, в которой содержится все необходимое. Работа по конфигурировнию своих клиентов и интеграции со своей конфигурацией рассчитана на 1С-программиста. Требуется публикация веб-сервиса.

Конфигурация тестировалась на платформе 8.3.12.1412

Никаких защит, скрытых модулей, библиотек, покупок в приложении, ограничений в приложении в данном проекте не предусмотрено.

Обновление от 12.01.19:

-Добавлена совместимость с Android 4.2

-Добавлен элемент экрана "Картинка". В демо базе сделан пример работы с картинкой. Вот так это может выглядеть.


Обновление от 15.01.19:

-Добавлена совместимость с Android начиная с 4.0.3 (пока только в apk-файле, в магазине нет)

-Увеличен шрифт надписей

Обновление от 16.01.19 :

-Добавлена совместимость с 4.0.3 (IcecreamSandwich)

-Увеличен шрифт

-Теперь можно передвать надписи в виже html-строки.

Надписи в виде html-строки позволяют задавать форматирование в строке - увеличивать шрифт, делать подчеркивание , выделение жирным и т.д. Как это происходит например в Ворде. 

Например, задав строку в 1С в таком виде: Абразивный порошок(02-2,2) с МКР (<u>ТУ 3989-003-82101794-2008</u>) <b>Шлак гранулированный</b>

На экране она выйдет в таком виде:

HTML-строка дает большие возможности. Для того чтобы выделить часть строки надо заключить часть строки в тег. Например <b>Шлак гранулированный</b> - это bold - жирный текст.

Вот список поддерживаемых тегов:

  • p
  • ul
  • li
  • div
  • span
  • strong
  • b
  • em
  • cite
  • dfn
  • i
  • big
  • small
  • font
  • blockquote
  • tt
  • a
  • u
  • del
  • s
  • strike
  • sup
  • sub
  • h1
  • h2
  • h3
  • h4
  • h5
  • h6
  • img
  • br

Обновление от 17.01.19:

  • добавлена обработка аппаратной кнопки Enter на ТСД
  • вопрос при выходе из процесса
  • базовая авторизация в сервисе

 

Обновление от 21.01.19 (обновлена инструкция и демо-база):

 

  • Функции для логина(авторизации): процесс, который запускается при входе в приложение, загрузка нужного клиента
  • Мелкие улучшения. автоматический переход при диалоге (раньше не работал)
  • Передача изображения с камеры устройства. Можно разместить на экране кнопку камеры и получать полноразмерные снимки в 1С в виде строки base64. Теперь с телефона можно например организовать ввод нового товара с фотографиями, штрих кодом. Можно использовать для функции мерчендайзинга например. Или для фотографирования сотрудников.

Буду благодарен за обратную связь, ваши вопросы и предложения!

79

Скачать файлы

Наименование Файл Версия Размер
Демо-база , с конфигурацией для установки и инструкция с описанием новых функций от 21.01.19
.zip 1 009,54Kb
21.01.19
38
.zip Версия 1.55 1 009,54Kb 38 Скачать
apk-файл (если невозможно скачать с Google Play). В Gogle Play - та же самая программа бесплатно!
.apk 2,05Mb
21.01.19
15
.apk Версия 1.55 2,05Mb 15 Скачать

См. также

Специальные предложения