Год назад я выпустил приложение Simple WMS и не смотря на то что оно в первую очередь задумывалось для автоматизации складского учета, его разработчики сразу же стали использовать для других бизнес-применений – курьерка, экспедиция, заявки – всего не перечислишь. Я понимаю, что если конструктор не содержит каких то функций то для обхода этих недостатков разработчики придумывают костыли. Но ведь суть конструктора – упростить разработку, снизить трудозатраты. Но когда конструктор упирается в свой предел, в свои границы получается наоборот – разработчику приходится напрягаться чтобы придумать средства обхода.
Функционал — это полбеды, хуже когда архитектура не справляется с назначением. Пример тому – переключение экранов в Simple WMS. Оно подчиняется определенной логике переключения, циклы и т.д. Но чтобы обойти ряд ситуаций пришлось делать разные команды – удержание экрана, показ по условию, выход и т.д. Это все костыли. И всего этого можно было бы не делать если бы была другая архитектура.
В общем, разработчикам стало «тесно» в рамках Simple WMS поэтому я пересмотрел подходы, архитектуру и выпустил новое решение — Simple UI.
Благодаря расширенной архитектуре сфера применения Simple UI – не только ТСД и учетные системы но и любые приложения для мобильной платформы, ориентированные на сбор и хранение данных, взаимодействие с учетной системой или самостоятельные.
Simple UI – это полная замена Simple WMS. Он также может запускаться на ТСД и работать с конфигурациями, написанными под Simple WMS. Все нововведения (такие как печать, распознавание текста и другие) я делаю только под Simple UI, мне не смысла поддерживать 2 системы. Все что было в Simple WMS и многое друге – также бесплатно и в Simple UI. Поэтому нет причин не перейти на него.
Что нового появилось в Simple UI относительно Simple WMS*:
*в случае, если ранее вы не работали с Simple WMS рекомендую ознакомится с этим материалом и его обновлениями, так как Simple UI содержит все это
Произвольная разметка экрана и оформление элементов.
Теперь можно настраивать расположение элементов на экране произвольно. Делается это с помощью «контейнеров» которые содержат элементы (аналог «Групп» в управляемых формах 1С). Контейнеры могу располагаться горизонтально и вертикально , могут занимать весь экран или только по размеру элементов и т.д. Контейнеры могут содержать контейнеры и так до бесконечности. Это особо актуально для больших экранов (планшетов).
Кроме того теперь можно размещать неограниченное количество элементов. Старый формат предполагал конкретные предопределенные элементы экрана. Сейчас, чтобы разместить например 5 полей ввода нужно просто добавить в контейнер 5 полей и все.
У элементов экрана теперь можно настраивать оформление и также расположение. Это как бы "таблицы стилей". Т.е. одни и те же элементы оформления можно применять к разным элементам разных экранов и конфигураций
Прочие изменения по составу элементов:
- Значения по умолчанию для полей — теперь есть такая возможность.
- Появился элемент «Галочка» (чекбокс)
- Появились картинки на кнопки. Просто небольшой набор стандартных иконок.
- Html – поля теперь активные – туда можно передать адрес или телефон и он будет нажиматься и вызывать соответствующее действие в Андроид
- В элементах теперь есть функция «Не обновлять экран» — например можно нажать кнопку, запрос будет отправлен, но никаких действий с экраном не последует.
- Я убрал признак «Переключаться по окончанию ввода» после того как сам пару десятков раз забывал ее поставить когда разрабатывал конфигурации. Теперь все элементы вы зывают какие то действия – штрих-код, кнопки и т.д.
Переключение экранов, панель управления
Переключение экранов как в Simple WMS удобны для складских приложений, так как логика автоматизации действий складских работников примерно соответствует.Это режим у меня теперь называется "упрощенный" В новом формате можно поставить режим «Произвольный запуск экранов». Для каждого экрана настраиваются действия по переключению или запуску других экранов. Таким образом можно реализовать старую логику и сделать например возвраты назад (чего раньше не было). Можно сделать любые переходы и циклы просто переходами между экранами и произвольными запусками.
В демо-базе есть 2 примера показывающих новое управление. Это можно делать через сервер (в обработчике) либо проще это настроить в OFF-line командах вот так. Т.е. нужно у каждого экрана прописать куда он пойдет дальше в случае нажатии той или иной кнопки. Кстати это удобно даже для онлайн -работы – нет лишних обращений к базе
Кроме того, нижняя панель теперь отключаемая. Ее функции можно повесить на свои кнопки. И собственно теперь не обязательно иметь экраны – приложение может состоять из одного экрана на котором все происходит
Подписки на события.
Теперь кнопки являются самостоятельными (а не блоком кнопок) и все другие элементы также генерят свои события, которые можно обрабатывать. В оффлайн это оформляется в виде такой настройки
Экран диалога
Теперь можно запускать свой модальный экран диалога(вместо диалога на отдельном экране) и он тоже будет генерировать событие при успешном вводе. Это такое окно которое ожидает от пользователя ввода и нажатия ОК. Это обычный экран со своим наполнением. Не обязательно использовать контейнеры.
Платные функции (версия Pro)
Вышеперечисленный функционал как и Simple WMS – полностью бесплатен. Но теперь приложение содержит встроенные покупки. Описанные ниже 2 функции являются частью режима «Pro». Это единоразовая покупка, как например лицензия 1С. Дальнейшее развитие платного функционала будет укладываться в данную лицензию. Возможно в дальнейшем к этим двум функциям прибавятся новые платные функции, так как я планирую развивать как бесплатную часть так и платную.
Выбор строки таблицы
Теперь при нажатии на строку генерится событие, передающее JSON объект. В дальнейшем этот режим будет развит для выбора результатов нечеткого поиска – голосового ввода и визуального распознавания текста.
Документы
Документы — это ключевое понятие новой платформы. Документы – это любые структуры хранения данных, в терминологии 1С – это справочники, документы, перечисления. В отличии от 1С они являются полиморфными – т.е. документы одного вида запросто могут иметь абсолютно разную структуру – разный набор полей и типов данных. Кроме того документы могут состоять из других документов – подобно тому как одна молекула может стать частью другой молекулы и образовать новую молекулу. Например вот так. Тут поля покупателя экранируются поэтому не сильно наглядно но смысл понять можно. Похожий принцип хранения только в XML реализован в горячо любимой КД2
Достигается это за счет того, что собственно все данные документа хранятся в JSON строке, в сериализованном виде. Конечно же для представления данных, быстрого поиска часть полей выделяется в отдельные поля представления, так как каждый раз для этих целей распаковывать JSON было бы неэффективно.
Документы изначально делались для полностью автономного приложения, которому не нужна база и постоянная синхнонизация. В платформе уже есть режимы оффлайн- работы. Но они предполагают SQL. Да, c SQL можно сделать вообще все. Но документы значительно упрощают разработку и предоставляют улучшенный пользовательский опыт.
Вдохновленный этой идеей я, однако, не сразу подобрал формулу для реализации. Сначала я пошел по пути работы с чистым JSON и сделал ряд методов для экранов, которые бы формировали JSON и записывали его в базу. Типа вы делаете экран, там есть поля, поля попадают в JSON и можно собрать любой объект, записать, открыть.Но… это оказалось громоздко, сложно для разработчика. Хотя я и оставил все эти методы.
Вместо этого я придумал другой подход. Он не содержит кода и вообще полностью все автоматизирует. Теперь это делается так:
- Вы создаете структуры документов в 1С. Для этого не нужно ничего писать нужно просто перечислить состав полей и назвать их. Документы могут включать другие документы. В общем все как в 1С
- Структуры документов являются частью конфигурации. Они работают автономно без связи с базой. Как только вы включили документы в состав конфигурации их можно начинать использовать – вводить, редактировать и т.д. Больше ничего делать не надо.
- Одновременно, документы являются и объектами обмена. Который также реализован сразу же в 1С. Не нужно ничего знать про веб-сервисы. Как только вы создаете документ на мобильном устройстве – он встает на синхронизацию (белая тучка) и как только есть возможность данные отправляются в базу и попадают в виде Экземпляров документов. Т.е. объект на мобильном устройстве связан со своим экземпляром. Как только что то меняете на мобильном меняется экземпляр и наоборот. При этом естественно это полностью независимая оффлайн работа. И далее вы уже работаете с ним как с обычным документом 1С.
Вот собственно, что из себя представляет документ — строка JSON:
И наоборот — из 1С можно выгрузить документы на мобильное устройство просто создав экземпляры. Экземпляры имеют получателей – таким образом на каждое мобильное устройство попадет только то что нужно его пользователю. Т.е. другими словами взаимодействие через Документы сводится к взаимодействию с документами «Экземпляр документа». Все остальное полностью автоматическое.
Кстати, свойства документов позволяют организовать адресную рассылку или обмен документами по маршрутам или например синхронизацию данных на всех устройствах (на уровне базы 1С). Для этого нужно просто управлять реквизитами "Пользователь" и "Синхронизация"
Документы содержат постоянные и переменные реквизиты. Переменные реквизиты можно добавлять по желанию пользователя на экране.
Важной UX-особенностью документов является то, что они по сути не содержать кнопок записи или отмены записи так как запись в базу происходит сразу при изменениях. Это подобно карточкам в Google Keep.
Документы могут включать в себя коллекцию присоединяемых изображений. Изображения с камеры или галереи присоединяются в горизонтальной полосе прокрутке внизу. Также сюда добавится работа с подписью.
Также реализована работа с присоединяемыми файлами и их обработкой на устройстве. Можно отправлять файлы с устройтва в базу или с базы в устройство. А знаете что это значит? Это значит что можно отправить печатные формы на документ. Например поставить на подписке заполнение таб документа, сохранение в PDF и PDF в "Экземпляр объекта". А если добавить сюда ввод подписи с экрана…
Кроме предопределенной формы которая генерится автоматически, для документа можно реализовать кастомную форму как для экранов с использованием контейнеров. Пример есть в базе. Надо сказать что этот режим на данный момент несколько ограничен – нет например нет картинок и переменных полей.
Документы можно использовать для обычных экранов. Например вы можете выгрузить справочник Контрагенты и выбирать контрагентов в своих обычных процессах. Пример есть в базе.
Кстати о выгрузке – в демо-базе есть пример подписки справочника «Номенклатура» который делает Экземпляры документов «Товары» и при любых изменениях Номенклатуры происходит обновление далее по цепочке. Т.е. достаточно записать номенклатуру и она появится в моб. устройстве как и все изменения.
Документ содержит одну табличную часть. Естественно, она настраивается. Я могу бы сделать и несколько, но все равно документы могут включать в себя другие документы, также содержащие таб части. Поэтому я решил не усложнять.
На данный момент из событий обрабатывается работа с штрихкодом. Можно сделать поиск по штрихкоду среди таблиц базы данных в том числе и документам и подстановку результата в реквизит и таблицу. С проверкой результата. Позже события будут расширяться по аналогии с офф-лайн режимом обычных экранов
Документы можно разместить в главном меню как отдельные пункты. Ну либо все они доступны из специальной формы по типам
Simple UI может работать в различных режимах:
- Режим On-line (режим конструктора экранов или основной режим в Simple WMS) – конструктор фронта на мобильном устройстве или ТСД, при этом сам код выполняется на стороне учетной системы (в 1С или ином беке) через HTTP запросы. Таким образом реализуются обычно клиенты WMS систем, мобильные рабочие места ERP и т.д. Также расширением этого режиа является возможность отложенной отправки при обрыве связи
- Режим Off-line (полный или частичный) – решение полностью автономное, работает со свое БД. Логика работы программируется на чистом SQL. Презентация описана тут : //infostart.ru/public/1108116/
- Режим «документов» (*версия Pro)- еще один offline режим работы, целью которого является максимальное упрощение разработки приложения. Документы – это произвольные структуры данных – справочники и документы. Может использоваться совместно с режимами 1 и 2 (например можно использовать справочники-документы для выбора в экранах)
Возможности Simple UI:
- Конструирование произвольных экранов и произвольных связей между ними в режиме конструктора (также поддерживается «старый» режим связей между экранами и циклов)
- Произвольные кнопки, события экранов, диалоговые окна
- Таблицы в экранах и в отдельных окнах, таблицы в виде списка карточек
- Работа со штрихкодами с ТСД (через HID, обработку строки с CR/LF или «нажатия» клавиш) или с камеры устройства
- Распознавание текста оффлайн
- Распознавание голоса
- Работа с картинками с камеры и вывод картинок
- Фиксирование геопозиции (GPS, ГЛОНАСС)
- Ввод подписи с экрана
- Синтез речи (строк) на экране, в том числе посылка оповещения в виде текстовой строки
- Печать на мобильном устройстве с сервера (через упаковку печатных форм в PDF в http-запрос)
- 2 вида offline режима для независимой работы
- Документы(*версия Pro) – упрощенное и быстрое развертыванеи оффлайн объектов (справочников и докумнетов) и синхронизации с 1С
Приложение доступно в Google Play и также можно скачать apk к статье
В заключении, хочу сказать что настоящее состояние платформы является скорее базой или отправной точкой, форпостом для дальнейшего развития. У меня есть дорожная карта по которой я планирую постепенно включать новые функции и в том числе уникальные конкурентные преимущества. В этом мне очень помогают ваши отзывы, пожелания и критика. Большое спасибо! Моя модель развития построена на плотном взаимодействии с разработчиками и постоянной поддержке проектов.
Видео с обзором новых возможностей:
(также рекомендую посмотреть видео к статье //infostart.ru/public/976636/)
Обновление 21.11.19:
- Печать с устройства для обычных форм и для документов. Обновлено приложение, демо-база и инструкция.
Обновление 11.12.19:
-
распознавание текста
-
3 режима поиска в списке документов (по распознаванию текста, голосовой ввод, по штрих коду)
-
таблица в виде списка карточек
-
отправка оповещения на устройство в виде синтеза речи в фоновом режиме
Более подробно об этом с видео вот в этой статье: //infostart.ru/public/1166378/
Аплодирую стоя. Как Вы это делаете?
Вы — отличный разработчик. Спасибо.
(1) Спасибо! Стараюсь)
Не совсем в итоге понятно как создать приложение и что для этого нужно. Расскажите про это — будет интересно.
(3) Это продолжениеSimple WMS — там есть видео, форум и прочие материалы. К новому приложнию идет демо-база с примерами и инструкция — все тоже самое только с новыми разделами и примерами. Видео по новому функционалу пока не записано. Но будет.
Дмитрий, скажите пожалуйста, а как обстоят дела с «интернационализацией» / мультиязычностью в вашей разработке? Можно ли это также успешно применить за пределами «русскоговорящего пространства» ?
(5) Тут такая ситуация. Выпустить языковой пакет для приложения — дело получаса и если надо для румынского выпустить то можно сделать так — я вам строчки на русском — вы мне на румынском, я вставляю в пакет и публикую в маркете. А вот с демо базой сложнее — там тоже все надо переделывать хотя бы на английский и текст кода тоже на английский (сейчас она на русском). Ну документация — аналогично. Само решение для рабочего места — вы сами пишете на том языке какой хотите. По сути 99% интерфейса — это и есть то что вы в конструкторе написали. В этом плане легче. Сейчас оно опубликовано только на русском хотя изначально прородитель Simple WMS писался для для чисто немецкого проекта. Но ввиду того что надо и доки и демку переписывать на нужном языке я пока не делаю. У меня на ближайший год запланирован взрывной рост функционала поэтому международную версию я планировал на потом когда все утрясется.
Pro версия уже есть или только планируется?
(8) Есть — это встроенная покупка, функционал «документы»
Дмитрий. Можете расширение конфигурации отправить на электронику ez_tob@mail.ru. За ранее спасибо.
(10) Не совсем понял о каком расширении речь, но если Вы скачали демку то из нее можно сделать расширение переносом объектом по подсистеме Simple WMS.
Дмитрий. В том то и дело я не могу скачать демо нет возможности