Разработка алгоритмов с помощью действий Mobile SMARTS
Каждый алгоритм — это заданный набор действий, которые последовательно (или не совсем) выполняет клиент на терминале. Алгоритм определяет логику обработки документов определенного типа, для которого он задан, либо логику работы отдельной операции, которая может вызываться из других алгоритмов.
![]() | ![]() |
Алгоритм в любом типе документа может содержать произвольное количество экземпляров одного и того же действия, каждый из которых может отличаться от другого значениями свойств. Значения свойствам проставляет разработчик операции.
Например, для одного типа документа задано одно и то же действие «Меню» несколько раз, но с разными именами (имя должно быть уникальным для каждого действия) и настройками свойств. Из‑за того, что свойства у действий «Меню» настроены по разному и указаны переходы на разные действия, их алгоритм работы будет отличаться.
![]() | ![]() |
В процессе выполнения алгоритма для обмена данными между действиями существует сессия. Сессия представляет собой хранилище записей. Действия, используя сессию, добавляют, удаляют или вносят изменения в данные записей.
Разработка алгоритма в Mobile SMARTS сводится к его компоновке из готовых бл оков в визуальном редакторе. Готовые блоки называются действиями. Все доступные действия в Mobile SMARTS делятся на визуальные и невизуальные.
Визуальные и невизуальные действия
Визуальные и невизуальные действия по‑другому можно назвать как «с окошками» и «без окошек».
Визуальные действия являются модальными, т.е. требуют от пользователя какого‑то действия — ввода данных, выбора чего‑то из списка и т.д. (меню, выбор номенклатуры, просмотр записей, редактирование полей). Это те действия, которые представляют некую формочку.
![]() | ![]() |
Практически все визуальные действия содержат свойства, задающие пользовательский интерфейс на терминале — например, «Текст в верхней части окна», «Текст в самом окне» и т.д. Все визуальные действия системы имеют возможности по настройке своего внешнего вида и выводу сопроводительных текстов для пользователя, в том числе с помощью шаблонов и форматирования.
Невизуальные действия (например, группы «Программирование» или «Работа с документом») ничего не требуют (например, присваивание, различные проверки, вызовы, записи), и выполняются одно за другим до тех пор, пока не наступит очередь визуального действия или документ не закроется.
![]() | ![]() |
Значок
напротив некоторых действий в алгоритме означает, что такое действие является визуальным.
Вот как выглядят на ТСД визуальные действия:
![]() | ![]() | ![]() |
Например, текст в верхней части окна задан шаблоном с форматированием.
{GlobalVars.СпрятатьПомощь==True:;<r size="8">(esc) или 01 - меню \| 0 - все товары \| 02 - просмотр строк \| 03 - смена режима</r><hr/>}{SelectedProduct.ОтображаемоеИмя}<DarkRed><b>\{SelectedProduct.КолвоВДокументе:Сканировано (0)}\{SelectedProduct.Packing.Name}</b></DarkRed>{SelectedProduct.ЦенаСклад}![]()
![]()
Свойства визуальных действий
Единственным свойством, общим для всех действий, является имя конкретного экземпляра действия в дереве.
Имя «Сканирование» не будет отображаться на экране ТСД — это не текст в окне, а имя экземпляра действия, по которому это конкретное действие будет идентифицироваться в редакторе. Основное применение имен — адресация в условных и безусловных переходах. В действительности, никто не запрещает давать действиям такие имена как «10», «20» и т.д.
Для визуальных действий существуют свойства, присутствующие во всех действиях такого типа.
| Имя | Имя действия используется для указания перехода на него. Например, при неудачном сканировании товара можно сделать переход на какое‑либо действие. Для этого в соответствующем свойстве «При ошибке ввода» действия выбора номенклатуры нужно указать имя того действия, на которое следует переходить.![]() Имя можно не указывать. В этом случае на такое действие нельзя задать явного перехода по какому‑либо событию или условию. ![]() |
| Текст в верхней части окна | Строка. Информационный текст, отображаемый в заглавии страницы при выполнении действия могут применяться шаблоны ![]() |
| Полноэкранный режим | Зависит от старшего | Да | Нет. Определяет выводить ли окно действия в полноэкранном режиме (без верхних и нижних панелей, меню и т.д.). Полноэкранный режим означает, что не будут отображаться шапка с названием документа и нижние панели, которые в редакторе метаданных называются «Строки подвала». ![]() По умолчанию зависит от старшего, т.е. действия, находящиеся в группе, берут значение полноэкранного режима у группы, та у своей группы и в конечном итоге у типа документа ![]() Например, в действии «Выбор номенклатуры» полноэкранный режим зависит от того, какой режим выбран в типе документа «Сбор штрихкодов». ![]() |
| Полноэкранный режим (значение) | Да | Нет. Отображает будет ли действие выводиться в полноэкранном режиме с учетом указания на полноэкранный режим для родительских действий и типа документа |
| Запомнить на стеке | Да | Нет. Флаг, указывающий, следует ли сохранять состояние сессии перед выполнением данного действия. Позволяет организовывать правильные алгоритмы отмены выполнения действий (подробнее смотрите «Стек действий»). |
| Отмена действия по Escape | Отмена действия | Возврат на одно действие | Завершить документ | Прервать работу с документом | Возврат документа | или переход к любому выбранному действию из списка. (подробнее смотрите «Значение системных действий»). Тип отмены действия при нажатии клавиши Escape. |
Обработчики визуальных действий
В Mobile SMARTS предусмотрена возможность использовать обработчики в визуальных действиях. В обработчике можно задать клавишу или штрихкод, при нажатии на которую (или введя штрихкод) на ТСД будет происходить переход на другое действие которое было задано в свойствах обработчика.
Для добавления обработчика в визуальном действии нужно нажать правой кнопкой мыши на действие и в выпадающем меню выбрать «Добавить обработчик».
После этого в свойствах обработчика выбрать:
- Клавишу для перехода на другое действие. Действие, куда будет выполнен переход при нажатии клавиши или введении штрихкода;
- Ввести штрихкод, при вводе, которого, будет выполнен переход на выбранное действие.
Не обязательно указывать и клавишу и штрихкод, можно указать что‑то одно.
Дополнительно можно указать:
- Контрольную клавишу. Если назначена контрольная клавиша, то переход на заданное действие будет выполняться при одновременном нажатии «Клавиши» и «Контрольной клавиши» (например, Control+H);
- Условие срабатывания. Можно написать условие срабатывания клавиши или штрихкода. Срабатывание происходит, только если условие возвращает True. Если условие не задано, клавиша или штрихкод срабатывают всегда.
Для того, что бы пользователь ТСД знал, какие клавиши или штрихкоды соответствуют переходам и на какие действия, можно разместить помощь в виде текста в верхней части окна или создать там дополнительные управляющие кнопки.
Сессии
В процессе выполнения алгоритма для обмена данными между д ействиями существует сессия. Сессия представляет собой хранилище записей переменных вида «Имя» — «Данные» (например, Document — Строки документа). Каждое действие имеет набор каких‑то входных данных, с которыми оно работает и какой‑то результат своей работы. Действия, используя сессию, добавляют, удаляют или вносят изменения в данные записей, они берут исходные данные из сессии и по результату своей работы кладут обратно данные по именам.
У нас есть действие «Выбор номенклатуры, которое представляет визуальное действие, с помощью которого пользователь должен выбрать какую‑то позицию номенклатуры (например, отсканировав штрихкод или выбрав позицию из списка).
Результат работы этого действия занесение в сессию переменной SelectedProduct (объект, который содержит информацию о товаре, количестве и других дополнительных полях).
После этого процесс происходит дальше по алгоритму.
Следующее действие, которое необходимо выполнить в данном примере это «Правка количества». Теперь действие «Правка количества» использует данные лежащие в сессии. Это тоже визуальное действие, отображающее формочку для ввода количества товара. После того как пользователь ввел данные, действие «Правка количества» вносит изменения в сессию, изменив количество номенклатуры (Молоко «Деревенское» вместо 1 пачки было занесено 6 пачек).
Следующее действие «Занесение в документ». Оно берет данные из сессии и в соответствии со своими настройками, которые мы сделали у этого действия, и заносит запись непосредственно в документ. Документ также лежит в сессии и все действия имеют к нему доступ.
После прекращения работы с документом (завершение или временный выход) сессия прекращает свое существование. При возобновлении работы с документом появляется новая сессия.
















