Оффлайн-режимы в Simple WMS: полностью автономные приложения, отложенная отправка, гибридный режим

Публикация № 1108116

Разработка - Мобильная разработка

simplewms ТСД штрихкод мобильное приложение оффлайн штрих-код

18
Теперь Simple WMS имеет базу данных и можно создавать конфигурации для полностью автономных приложений, не зависящий от веб-сервера на стороне учетной системы, в выполнением логики на устройстве а не на стороне веб сервера. А также можно реализовывать другие гибридные режимы работы с использованием хранилища устройства. Тестировалось на платформе 1С 8.3.13.1865.

Я реализовал работу с базой данных в Simple WMS на чистом SQL-е. Т.е. это просто SQLсервер в приложении (SQLite 3) с которым можно общаться извне через HTTP-сервер приложения (в каждом клиенте встроен свой веб сервер) посредством SQL запросов или само приложение общается с ним SQL-запросами -как это заложено в конфигурации. Т.е. можно оправлять приложению POST запросы с SQLкомандами либо дать ему конфигурацию в которой эти самые SQL-запросы прописаны в логике работы. Это очень простое решение, но оно дает всю мощь SQL. Теперь можно делать автономные приложения без сервера. Конечно там есть обертки для упрощения этого процесса. Но я не пошел путем 1С и не стал создавать слой бизнеслогики – весь этот конструктор документов и справочников. Хочешь создать справочник – пиши CREATE TABLE. Да, это не визуальных конструктор конечно, но посмотрите на статьи на этом ресурсе – половину времени мы создаем решения, а вторую половину разбираемся как заставить 3-х звенную архитектуру работать быстрее. Как то мой препод по БД рассказывал что когда то давно (видимо во времена когда операционные системы были с строковым интерфейсом) язык SQL создавался как язык для пользователя. Т.е. пользователь приходил например в библиотеку и писал SELECT WHERE те книги которые ему нужны. Так что я думаю это не очень сложно.

В среде фрондендщков есть такое понятие как CRUD-приложения (от слов Create, Read, Update, Delete). Таким приложением является и Simple WMS. Только раньше оно общалось с БД учетной системы а сейчас со свой БД тоже. Я проанализировал основные места где приложение обращается к БД и теперь можно в конфигурации прописать тоже самое для off-line режима. Никакого кода в  обработчиках. Только SQL-запросы.

Например вот так создаются таблицы:

Вот так происходит поиск товара:

 

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

 

Режимы работы

  • Полностью автономная работа.

 

 

При таком режиме ставится галка «Off-line» в настройках приложения и устройство не пытается что либо передать и забрать с Веб-сервера учётной системы. Веб-сервера на бекэнде может не быть вовсе. Работа клиента визуально никак не отличается от работы в он-лайн режиме, просто вместо обращения к серверу устройство делает запросы к своему SQL-серверу

 

 

  • Автоматическое переключение в off-line при отсутствии связи. 

 

 

 

Рассмотрим пример: вы сканируете приход (2 экрана: сканирование товара и ввод количества). Вы работаете в онлайн, но отошли от wi-fi и связь прервалась. На экране где идет сканирование товара вам надо распознавать штрихкод и проверять есть ли он в базе. Если в экране определена офф-лайн функция то будет исполнена она и ошибки об обрыве связи не будет.

На экране ввода количества уже что то надо записать в базу, но связи нет. Для этого достаточно в конфигурации определить галочку «Записать отложенную задачу». Что произойдет на устройстве? Оно сохранить состояние hashmap (Переменные) в свою БД и потом когда связь появится передаст ее в 1С. Т.е. если в отсутствии связи прошло 5 циклов то клиент запомнит что нужно передать 5 записей. Для обработки отложенных задач теперь есть отдельный веб-сервис и обработчик

  • Гибридный режим: запросы могут выполняться в он-лайн

              SQL-ная часть выполняется до отправки запроса send_input в учетную систему. Зачем это нужно? Часто критерием производительности WMS систем называют скорость          сканирования (вместе с поиском товара) и сравнивают системы по этому параметру.  Поиск в собственной таблице может обеспечить суперскорость. Это возможно по 2м причинам:

    • это прямой запрос к таблице БД. Он очень быстрый в отличии от 1С например;
    • таблицу конкретного устройства можно подготовить для конкретного рабочего места – это будет выборка из справочника а не весь справочник (например только сырье, в то время как в регистре Штрихкодов все подряд. Кроме того это таблица в 1NF сразу с теми полями которые нужны а не со ссылками;

 

 

Общение с учетной системой

Из 1С можно работать с SQL сервером конкретного устройства передавая команды через http. Например отправлять справочники и забирать результаты заполнения документов. Ну или создавать свои структуры данных.

Например этот запрос создает таблицу товаров:

Запрос = "create table IF NOT EXISTS goods (id integer primary key autoincrement,art text unique, barcode text, title text)";	
ПараметрыЗапроса  = "";
СтрокаОтвета = Справочники.scМобильныеКлиенты.ОтправитьSQLЗапросМобильныйКлиент(URLМобильногоУстройства,"ExecSQL","","&query="+Запрос+"&params="+ПараметрыЗапроса);

 

Этим запросом запрашиваются отсканированные товары.

Запрос = "create table IF NOT EXISTS goods (id integer primary key autoincrement,art text unique, barcode text, title text)";	
ПараметрыЗапроса  = "";
СтрокаОтвета = Справочники.scМобильныеКлиенты.ОтправитьSQLЗапросМобильныйКлиент(URLМобильногоУстройства,"ExecSQL","","&query="+Запрос+"&params="+ПараметрыЗапроса);

На всякий случай есть консоль запросов

Также есть примеры работы

 

 

 

 

В разделе к основной статье //4098.ru/public/976636/  обновлены разделы документации, база 1С содержит пример конфигурации для работы с OFF-line режимом.

18

См. также

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

Комментарии
Избранное Подписка Сортировка: Древо
1. vdscom 19 15.08.19 14:09 Сейчас в теме
Спасибо, Дмитрий, впечатляет :)
2. informa1555 1082 15.08.19 14:11 Сейчас в теме
3. user940570 22.08.19 13:47 Сейчас в теме
(2) Дмитрий, добрый день! Никак не найти ваши контакты. Мы заинтересовались Вашей разработкой, она весьма подходит под нашу текущую задачу, но все же нужно с Вами обсудить возможность ее доработки. Могли бы вы связаться со мной по вопросу сотрудничества, приобретения Вашего продукта и его доработки. Заранее большое спасибо. (в личку не получается, все же оставлю здесь. a.gaevskiy@rslog.ru)
Оставьте свое сообщение