Новый тип главного меню конфигурации – произвольный экран
По умолчанию в главном меню выводится список процессов, альтернативой были «Плитки». Теперь можно кастомизировать главное меню без ограничений – ведь теперь можно поставить главным меню – экран. Можно размещать любые визуальные элементы. В нем можно поместить что-то запускающее другие процессы конфигурации, а можно ограничиться и одним экраном. Одноэкранные приложения хорошо сочетаются с «Репозиторием конфигураций» - запустил установленную конфигурацию, переключился на другую и т.д. без лишних действий.
Поддержка NFC
Теперь можно использовать NFC-метки в своих решениях для идентификации. Один из кейсов подсказал подписчик Александр Чесноков, цитирую: «метки (самоклеящиеся) размещаем на оборудование, которое подлежит периодическому осмотру, и ответственный сотрудник при осмотре считывает метку. Тем самым подтверждая время осмотра. QR-коды в данном случае не подойдут, так как их можно сфотографировать и сканировать фото.» Что ж, резонно.
С меток сканируется:
- ID(serial number) – в переменную NFC_ID
- Записанный текст, если есть, – в переменную NFC_TEXT
Доступно 2 режима:
- Режим сканирования записанных NDEF-меток отовсюду. Только метки, записанные, содержащие информацию в текстовом виде (mimeType: text/plain) – событие придет на сервис приложения и обработается в общем обработчике даже если приложение выключено. Зачем именно такие ограничения? Потому что на это сочетание (NDEF+text/plain) рассчитан фильтр приложения. Т.е. Андроид знает, что у него установлено приложение (SimpleUI), которое умеет обрабатывать такие метки. И когда подносишь метку, он это распознает, запускает приложение и дальше генерируется общее событие onNFC. Т.е. это доступно без процесса, в любом режиме. В принципе можно использовать для запуска процессов из андроида.
- Режим сканирования в любых технологиях, любых типов меток. Запускается на экране, если на экране есть элемент NFC (либо в переменные добавлен флаг onNCF). Экран должен быть открыт(активен). Генерируется событие ввода с listener=onNFC Также считывается ID и, если есть, текст.
Обновление в репозитории при смене версии
Без разницы, каким образом конфигурация попала на устройство (подгрузилась с сервиса, через файл и т.д.), если версия конфигурации поменялась, то установленная в репозиторий конфигурация также обновится.
Раскраска кастомных таблиц и списков карточек
В кастомных списках можно делать произвольный макет каждого элемента, в том числе и раскраску, но это затратная технология (на больших списках и медленных устройствах сказывается на быстродействии), да и лишние телодвижения. Поэтому добавлена просто «раскраска»
В опциях таблицы должно быть включено “colorizing”, и тогда на элементы можно использовать свойство _backgroung
Различные режимы проверки заполнения
Добавлены средства для проверки заполнения
1) Галочка элемента Подсвечивать пустое. Это просто автоматическая подсветка незаполненного. Ни на что не влияет, убирается, когда происходит заполнение
2) Галочка Не пропускать пустое. Выдаст визуальную ошибку на поле и не даст выполнится обработчику дальше.
3) Проверка поля в обработчике и визуальная выдача ошибки, если поле не соответствует. Это уже проверка не просто на заполненность, а на значение самого поля. Выполняется с помощью команды "Stop_<переменная поля>». Понятно, что и без этого достаточно вывести тост или что то подобное, но так нагляднее
Слайсы
В обработчике pythonscript добавлены «слайсы». Это по сути альтернатива стеку переменных, где данные передаются в обработчик/из обработчика в виде обычного словаря python и поля не в виде только строки а в базовых типах. Т.е. система анализирует поля ввода, записывает в словарь/json строку/целое/дробное/логическое/дату. Таким образом, разработчику сразу доступен словарь с нормальными типами без необходимости извлекать его из стека переменных и преобразовывать типы.
Например {“age”:28, “name”:”John”, “employed”:true}
Так как большое количество взаимодействий в Simple осуществлется через именно json(словари) то этот механизм призван существенно экономить время. Например через словари работает – офлайн СУБД Pelican/SimpleBase, онлайн – MongoDB, шина SimpleBus, различные сервисы и т.д.
Для того, чтобы поле писало в слайс, надо поставить галочку «Писать в слайс». Для чтения поля из слайса можно использовать префикс “#” . Сами слайсы доступны в переменных process_slice (слайс, существующий на протяжении всего процесса) и screen_slice (слайс экрана).
Упрощенные вызовы
Немного синтаксического упрощения для pythonscript обработчиков – то, чем пользуются чаще всего:
1) Функции модуля android теперь импортированы по умолчанию и можно просто писать toast, speak и т.д.
2) По умолчанию импортированы json, base64 и добавлены 2 функции str_to_json и json_to_str чтобы не писать каждый раз import json+ json.dumps(my_dict, ensure_ascii=False)
3) По умолчанию импортирована шина и команда SendBus
4) Добавлены функции для упаковки кода. Зачем это нужно – чтобы просто писать код обработчиков в обычных функциях, а не в виде кусков кода а затем просто ссылаться на них. Добавлена функция get_body - которая вытаскивает код из любой функции, чтобы можно было потом использовать в обработчике и функция make_handler которая делает стандартный Simple-обработчик события. См. пример ниже.
Вот так выглядит сейчас типичный обработчик
А вот так можно конструировать например асинхронные методы с помощью функций упаковки кода
Онлайн 2.0
Технологически, в данный релиз включена поддержка новых онлайн-обработчиков "onlinews" которые идут через шину SimpleBus (по сути через WebSocket) и дадут Симплу совершенно новые возможности. Новые обработчики добавляются взамен (как альтернатива) старых "онлайн" обработчиков, которые работают через HTTP-REST запросы. В чем преимущества нового режима:
- Не нужно публиковать http-сервис во внешнюю сеть (из 1С). Достаточно опубликованной шины (шину можно публиковать у себя, на VPS, где угодно. Она не хранит коммерческие данные)
- Сервером может быть любой участник шины (другие пользователи шины также могут исполнять команды - это могут быть как несколько серверов, так и устройства Simple)
- Непревзойденная производительность. Не тратится время на установку/завершение соединения, команды отсылаются сразу
- Чистая асинхронная архитектура исполнения обработчиков. Старые обработчики исполнялись синхронно (rest-запрос синхронный) и асинхронный режим был "псевдо"-асинхронным. Теперь наоборот
- За счет увеличения производительности стали возможны новые решения в самом конструкторе - новая отладка (пошаговое исполнение), режим предпросмотра экранов и контейнеров. Это будет рассмотрено в отдельных публикациях
В данный пак примеров не включены примеры по этим обработчикам, они будут приурочены к релизу 1С 8.3.27, где ожидается поддержка WebSocket. Вместо этого отдельными мини-релизами в моем канале выйдут новые инструменты разработки, работающие на onlinews
Пикеры даты, числа и времени
Добавлены т.н. «пикеры» - визуальные элементы для выбора числа, даты и времени. Для чисел задается диапазон. Примеры использования есть в демо-конфигурации.