Разработка алгоритмов с помощью действий 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 пачек).
Следующее действие «Занесение в документ». Оно берет данные из сессии и в соответствии со своими настройками, которые мы сделали у этого действия, и заносит запись непосредственно в документ. Документ также лежит в сессии и все действия имеют к нему доступ.
После прекращения работы с документом (завершение или временный выход) сессия прекращает свое существование. При возобновлении работы с документом появляется новая сессия.
Переходы по действиям
Алгоритм программы выполняется шаг за шагом, начиная с первого действия. Каждому действию можно задать уникальное имя, которое потом используется для задания перехода к данному действию.
Если переходы явно не заданы (не указаны переходы по именам), то действия будут идти по порядку. Если у действия не задано имя, то явный переход на него назначить нельзя, оно может быть выполнено, только когда придет его очередь (по порядку).
От одного действия могут быть назначены сразу несколько переходов на другие действия или операции. На какое действие или операцию будет осуществлен переход зависит от введенных данных.
Для удобства переходы показаны разноцветными стрелочками, чтобы видеть, куда могут переходить действия и при каких условиях или откуда может быть осуществлен переход на это действие. Синие стрелочки – переход по обычным действиям. Бордовые стрелочки – переходы по обработчикам. Красные и зеленые переходы по «if», зеленый – услов ие выполнено, красный – условие не выполнено. Оранжевые – задано неправильно имя перехода (например, удалили действие или переименовали).
Например, при выборе номенклатуры, если отсканированный товар был найден в справочнике номенклатуры, то переход будет на действие с именем «ПрисвоитьШК». Если товар не найден в справочнике номенклатуры, то переход будет осуществлен на действие с именем «10» - вызов операции Обработка неизвестного штрихкода (именовать действия можно используя числа).
Опциональные переходы – не обязательные переходы, зависят от настроек. Если опциональный переход не задан, то действие имеет свой встроенный в Mobile SMARTS алгоритм обработки.
Например, действие «Выбор номенклатуры». Если при выполнении этого действия товар не найден и не задан переход для этого случая, то действ ие имеет свой собственный уже написанный и встроенный в Mobile SMARTS алгоритм обработки не найденного товара (произвести звук ошибки и вывести сообщение, что товар не найден).
А если нам необходим свой специализированный алгоритм обработки ненайденного товара (например, вызов операции Обработка неизвестного штрихкода), то надо задать переход на него.
Для готовых решений на основе Mobile SMARTS (драйвера терминала сбора данных для «1С:Предприятия»), такой алгоритм уже написан.
Значение системных переходов
В выпадающем списке для действия (группировки действий, операции) кнопки отображаются возможные варианты перехода по нажатию такой кнопки. Вначале этот список заполнен системными переходами.
Для действий внутри алгоритма типа документа
| Системное действие | Латинское название | Описание |
|---|---|---|
| Отмена действия | cancel | Отмена изменений по текущему действию и возврат к предыдущему в стеке (изменения в сессию не сохраняются). |
| Возврат на одно действие | finishproc | Возврат к предыдущему действию в стеке без отмены произведенных изменений (изменения сохраняются в сессию) |
| Завершить документ | return | Выход из документа, документ считается выполненным, у него будет выставлен флаг завершен и при обмене данными он уйдет на сервер. |
| Прервать работу с документом | abort | Выход из документа, документ считается прерванным. Флаг завершения не выставляется, и документ остается на терминале. |
| Возврат документа | release | Отказ от выполнения документа. Если документ не был изменен, то он будет возвращен на сервер, в исходном состоянии, и не будет считат ься выполненным. Впоследствии его снова сможет забрать тот же или другой пользователь. Если документ был создан на терминале, то он будет удален. Если документ уже был изменен, то … |
Разница между прерыванием и завершением документа состоит в том, будет ли выставляться флажок «Завершен» в документе.
Для действий внутри алгоритма операции
| Системное действие | Латинское название | Описание |
|---|---|---|
| Отмена действия | cancel | Отмена изменений по текущему действию и возврат к предыдущему в стеке (изменения в сессию не сохраняются). |
| Возврат на одно действие | finishproc | Возврат к предыдущему действию в стеке без отмены произведенных изменений (изменения сохраняются в сессию) |
| Завершить операцию | return | Успешное завершение опера ции (операция выполнена) c возвратом результата. |
| Прервать операцию | abort | Прерывание операции без возврата результата. |
Для действий внутри групп или циклов
| Системное действие | Латинское название | Описание |
|---|---|---|
| Отмена действия | cancel | Отмена изменений по текущему действию и возврат к предыдущему в стеке внутри группы (изменения в сессию не сохраняются). |
| Возврат на одно действие | finishproc | Возврат к предыдущему действию в стеке группы без отмены произведенных изменений (изменения сохраняются в сессию) |
| Продолжить | continue | Для цикла: переход на начало цикла с выбором следующего элемента, или завершение цикла, если элементы цикла закончились. |
| Прервать | break | Прервать текущую группу действий и перейти на следующее действие в основном алгоритме |
| Завершить операцию | return | Завершение выполнения всего алгоритма, в котором находится группа действий. |
| Прервать операцию | abort | Прерывание выполнения всего алгоритма, в котором находится группа действий. |
Переходы по стеку действий
В процессе исполнения операций визуальные действия, а также действие группировки действий, могут складываться в стек действий. Смысл стека действий в следующем:
- предоставить оператору ТСД возможность возвращаться к действиям, которые он уже выполнял (экранам, на которых он только что был), для того, чтобы что-то там поправить;
- предоставить возможность вызова каких-то последовательностей действий как подпрограмм – например, вызов меню по клавише F1, и возврат к месту, откуда меню было вызвано, по клавише Escape.
Действие окажется на стеке в том случае, если её свойство «Запомнить на стеке» будет равно «Да».
Для навигации по стеку в Mobile SMARTS предусмотрен механизм отмены действия и специальные зарезервированные команды перехода, такие как «Отмена действия», «Возврат на одно действие» и т.д. (системные переходы).
Рассмотрим как происходят переходы по стеку.
| Действие | Запомнить на стеке | Переход к действию по отмене | Описание |
Выбор номенклатуры![]() | Нет | Главное меню![]() | Находясь в окне «Выбора номенклатуры» при возврате на одно действие или отмене действия (при нажатии клавиши Escape) будет выполнен переход к последнему действию, находящемуся в стеке, в данном случае это «Главное меню». |
Ввод количества![]() | Да | Главное меню![]() | Находясь в окне «Ввод количества» при возврате на одно действие или отмене действия (при нажатии клавиши Escape) будет выполнен переход к последнему действию, находящемуся в стеке, в данном случае это «Главное меню». Переход к «Выбору номенклатуры» (при нажатии клавиши Escape) не может быть выполнен, т.к. в настройках этого действия указано, что на стеке не запоминать. |
| Ввод даты | Нет | Ввод коли чества![]() | Находясь в окне «Ввод даты» при возврате на одно действие или отмене действия (при нажатии клавиши Escape) будет выполнен переход к последнему действию, находящемуся в стеке, в данном случае это «Ввод количества». |
| Выбор палеты | Нет | Ввод количества![]() | Находясь в окне «Выбор палеты» при возврате на одно действие или отмене действия (при нажатии клавиши Escape) будет выполнен переход к последнему действию, находящемуся в стеке, в данном случае это «Ввод количества». Переход к «Вводу даты (при нажатии клавиши Escape) не может быть выполнен, т.к. в настройках этого действия указано, что на стеке не запоминать. |
Примеры перехода по стеку действий
Пример 1 | По порядку
Рассмотрим пример, когда у всех визуальных действий в настройках свойств «Запомнить в стек» выбрано «Да», а в настройках свойства «Отмена действия по Escape» выберем «Отмена действия» (можно выбрать «Возврат на одно действие»).
Все действия попали в стек действий. При нажатии кнопки Escape будет выполнен переход на последнее действие, находящееся в стеке. В нашем примере отмена будет происходить в обратном порядке выполнения действий.
Пример 2 | Всегда возвращаться в Главное меню
Нам необходимо сделать, чтобы при нажатии кнопки Escape, из любого визуального действия всегда попадать в «Главное меню».
Для этого, нужно в действии «Главное меню» в свойствах «Запомнить на стеке» выбрать «Да».
Во всех остальных визуальных действиях: Выбор номенклатуры, Ввод количества, Ввод даты, Выбор палеты в свойствах «Запомнить на стеке» выбрать «Нет», а в варианте перехода отмены действия указать «о тмена действия» или «возврат на одно действие» (в зависимости от того, нужно запоминать внесенные действиями изменения в сессию или нет).
Теперь переход, из любого визуального действия, при нажатии кнопки Escape будет выполнен на последнее действие находящееся в стеке, в нашем примере это «Главное меню».
Пример 3 | Переходы в операциях
Рассмотрим пример, когда и в операции и в алгоритме типа документа у всех визуальных действий в настро йках свойств «Запомнить в стек» выбрано «Да». У «Вызова операции» в настройках свойства «Операция была прервана» выберем «Возврат на одно действие».
У действий «Выбор номенклатуры и «Ввод количества находящихся в «Операции», в настройках свойства «Отмена действия по Escape» выбрано «Прервать операцию».
При отмене действий «Ввод количества» или «Выбор номенклатуры» по Escape операция будет прервана и будет выполнен переход из операции в тип документа на последнее действие находящееся в стеке главного алгоритма, в нашем примере это «Главное меню».
Стек в главном алгоритме и стек в операции — это сов ершенно разные стеки.
У действия «Выбор номенклатуры» в настройках свойства «Отмена действия по Escape» выбрано «Прервать операцию», а у действия «Ввод количества» выбрано «Отмена действия».
В этом случае, при отмене действия «Ввод количества» по Escape, будет выполнен переход на последнее действие находящееся в стеке. В нашем примере это действие «Выбор номенклатуры», находящееся в операции. При отмене действия «Выбор номенклатуры» по Escape операция будет прервана и будет выполнен переход из операции в тип документа на последнее действие находящееся в стеке главного алгоритма, в нашем примере это «Главное меню».
Рассмотрим случай, когда у действий «Выбор номенклатуры» и «Ввод количества находящихся в «Операции», в настройках свойства «Отмена действия по Escape» выбрано «Отмена действий».
В этом случае, при отмене действия «Ввод количества» по Escape, будет выполнен переход на последнее действие находящееся в стеке. В нашем примере это действие «Выбор номенклатуры», находящееся в опе рации. При отмене действия «Выбор номенклатуры» выйти из стека операции в тип документа по Escape не получится.
Действия
Ввод даты
«Ввод даты» — визуальное действие, позволяет в специальной формочке (окне ввода) вручную ввести дату. Можно вводить дату регистрации или срока годности, по умолчанию в поле ввода автоматически проставляется текущая дата (отменить можно в настройках свойства).
Скриншоты
Входные параметры
| Параметр | Значение | Описание |
{SelectedProduct} | Товар с упаковкой | Найденный товар с упаковкой, количеством и дополнительными полями. |
Результат работы
| Параметр | Значение | Описание |
{SelectedProduct} | Товар с упаковкой | Товар с упаковкой, количеством и дополнительными полями с внесенной датой. |
Настройки действия
Полный список свойств данного действия следующий:
-
Главное
Свойство Значение Описание Имя Имя действия Должно быть заполнено для задания на него переходов. Имя можно не указывать. В этом случае на такое действие нельзя задать явного перехода по какому-либо событию или условию. -
Ввод данных
Свойство Значение Описание Выставить текущую дату Да | Нет Признак, устанавливать ли в качестве начального значения, текущую дату. Дата для ввода Дата регистрации | Срок годности Отображает какая дата будет ввод иться. Номер даты Номер Номер даты, для сохранения в сессии. Если задать этот параметр, например, 5 — в сессии будет сохраняться значение с ключом Date5. Установить для всех строк буфера Признак Признак установки идентификатора хранения для записей в буфере. Формат даты Формат Формат для вывода и ввода даты. Например, «ddMMyy» позволяет задавать дату в виде 180413 — 18 апреля 2013 года. Подробнее смотрите «Форматы вывода». -
Интерфейс
Свойство Значение Описание Полноэкранный режим Зависит от старшего | Да | Нет Определяет выводить ли окно действия в полноэкранном режиме (без верхних и нижних панелей, меню и т.д.). Полноэкранный режим (значение) Да | Нет Отображает будет ли действие выводиться в полноэкранном режиме с учетом указания на полноэкранный режим для родительских действий и типа документа. Текст в верхней части окна Строка Информационный текст, отображаемый в заглавии страницы при выполнении действия могут применяться шаблоны. Текст в самом окне Строка Вступительный текст. -
Общее
Свойство Значение Описание Время бездействия Время в секундах Время бездействия, после которого будет выполнен переход на другое действие. Запоминать прошлое значение Да | Нет Флаг указывает, запоминать ли прошлое значение. Переход по бездействию Отмена действия | Возврат на одно действие | Завершить документ | Прервать работу с документом | Возврат документа | или переход к любому выбранному действию из списка Куда будет выполнен переход по бездействию (подробнее смотрите «Переходы по действиям). Фоновое изображение Путь к файлу изображения Относительный или абсолютный путь к файлу фонового изображения. -
Управление
Свойство Значение Описание Следующее действие Имя действия Имя действия для перехода. -
Управление отменой по Escape и стеком отмен
Свойство Значение Описание Запомнить на стеке Да | Нет Флаг, указывающий, следует ли сохранять состояние сессии перед выполнением данного действия. Позволяет организовывать правильные алгоритмы отмены выполнения действий (подробнее смотрите «Стек действий»). Отмена действия по Escape Отмена действия | Возврат на одно действие | Завершить документ | Прервать работу с документом | Возврат документа | или переход к любому выбранному действию из списка Тип отмены действия. Действие, на который произойдет переход в случае нажатияEsc (подробнее смотрите «Переходы по действиям»).
Ввод количества
Ввод количества — визуальное действие, позволяет в специальной формочке (окне ввода количества) вручную ввести нужное количество штучного или весового товара, который был выбран (включая количество разной упаковки).
Скриншоты
![]() | ![]() | ![]() |
Использование действия
Действие «Ввод количества» позволяет править в выбранном товаре с упаковкой (SelectedProduct) количество упаковки (SelectedProduct.Packing). Начальное количество берется из SelectedProduct.Quantity.
Политика учета
Для того чтобы в действии вводить количество сразу в нескольких единицах упаковки, в политике учета для товара должны быть выбраны эти упаковки.
Если SelectedProduct содержит товар с политикой учета, то действие предложит ввести количества в упаковках, заданных в политике.
![]() | ![]() |
После ввода данные о количествах каждой упаковки будут сохранены в SelectedProduct отдельно.
При отображении поля SelectedProduct.Quantity оно будет возвращаться в суммарных для всех упаковок единицах.
При занесении SelectedProduct в документ действиями прямой записи или записи в буфер будет учитываться флаг «Для каждого типа упаковки отдельно»:
- Если флаг задан, то каждая упаковка со своим колич еством будет заноситься в фактические строки отдельно;
- Если флаг снят, то в фактические строки будет занесена одна общая строка с базовой упаковкой и суммарным, пересчитанным количеством.
Количество извлекается из штрихкода
При использовании шаблонов штрихкода возможно сделать так, чтобы количество товара извлекалось из штрихкода упаковки и подставлялось в окно ввода количества, избегая его ввода вручную.
Теперь количество товара автоматически извлекается из штрихкода упаковки и подставляется в окно ввода количества.
![]() | ![]() |
Вызов калькулятора
Количество можно ввести через встроенный калькулятор, введя выражение.
Если находясь в форме ввода количества нажать на клавишу ТСД «стрелка вправо», то появится калькулятор. При вводе выражения и на жатии равно, в окно ввода количества будет занесен результат введенного выражения.
![]() | ![]() |
Входные параметры
| Параметр | Значение | Описание |
{SelectedProduct} | Товар с упаковкой | Найденный товар с упаковкой и дополнительными полями. |
Результат работы
| Параметр | Значение | Описание |
{SelectedProduct} | Товар с упаковкой | Товар с упаковкой, измененным количеством и дополнительными полями. |
Настройки действия
Полный список свойств данного действия следующий:
.Главное
| Свойство | Значение | Описание |
| Имя | Имя действия | Должно быть заполнено для задания на него переходов. Имя можно не указывать. В этом случае на такое дей ствие нельзя задать явного перехода по какому-либо событию или условию. |
Интерфейс
| Свойство | Значение | Описание |
| Полноэкранный режим | Зависит от старшего | Да | Нет | Определяет выводить ли окно действия в полноэкранном режиме (без верхних и нижних панелей, меню и т.д.). |
| Полноэкранный режим (значение) | Да | Нет | Отображает будет ли действие выводиться в полноэкранном режиме с учетом указания на полноэкранный режим для родительских действий и типа документа. |
| Текст в верхней части окна | Строка | Информационный текст, отображаемый в заглавии страницы при выполнении действия могут применяться шаблоны. |
Общее
| Свойство | Значение | Описание |
| Время бездействия | Время в секундах | Время бездействия, после которого будет выполнен переход на другое действие. |
| Переход по бездействию | Отмена действия | Возврат на одно действие | Завершить документ | Прервать работу с документом | Возврат документа | или переход к любому выбранному действию из списка | Куда будет выполнен переход по бездействию (подробнее смотрите «Переходы по действиям»). |
| Фоновое изображение | Путь к файлу изображения | Относительный или абсолютный путь к файлу фонового изображения. |
Управление
| Свойство | Значение | Описание |
| Следующее действие | Имя действия для перехода | Действие, на которое произойдет переход после ввода количества. |
Управление отменой по Escape и стеком отмен
| Свойство | Значение | Описание |
| Запомнить на стеке | Да | Нет | Флаг, указывающий, следует ли сохранять состояние сессии перед выполнением данного действия. Позволяет организовывать правильные алгоритмы отмены выполнения действий (подробнее смотрите «Стек действий». |
| Отмена действия по Escape | Отмена действия | Возврат на одно действие | Завершить документ | Прервать работу с документом | Возврат документа | или переход к любому выбранному действию из списка | Тип отмены действия. Действие, на который произойдет переход в случае нажатияEsc (подробнее смотрите «Переходы по действиям». |
Выбор номенклатуры
Действие «Выбор номенклатуры» выполняет очень важную функцию: указывает программе тот самый товар, для которого будут вводиться количества и пр. Одно и то же действие отвечает за любой способ выбора товара. Способы могут быть следующими:
- Сканирование ШК товара
- Ввод ШК товара вручную
- Ввод кода или артикула товара
- Выбор товара из списка
- Поиск товара по базе на основании ШК, кода или артикула, указанного в переменной сессии
Действие выбора номенклатуры поддерживает наиболее вероятные сценарии выбора товара. В нем есть настройки отображения списка для выбора товара из списка. Есть настройки для реакции на неверный ввод.
Скриншоты
![]() | ![]() |
Использование действия «Выбор номенклатуры»
Рассмотрим несколько сценариев использования действия выбора номенклатуры:
-
Сканирование штрихкода товара и возможность ввода с клавиатуры
По умолчанию действие выбора номенклатуры показывает на экране мобильного терминала большое поле ввода для сканирования штрихкода, текст в заголовке окна и текст прямо над полем ввода. Это позволяет сканировать и распознавать штрихкоды, вводить тот же самый штрихкод с клавиатуры, а также вводить артикул или код товара, по которому он будет идентифицирован.
-
Выбор товара по ручному вводу артикула
По ум олчанию действие выбора номенклатуры распознает товары не только по штрихкоду, но также и по артикулу и уникальному коду товара (например, коду товара в 1С). Для того, чтобы выбрать товар путем ручного ввода артикула на терминале сбора данных ничего дополнительно программировать или настраивать не нужно.
-
Выбор товара из списка
По умолчанию свойство «Позволять выбор из списка» выставлено в «Да», поэтому если ввести вместо штрихкода «0» и Enter, то на экран ТСД будет выведен список всех товаров по базе.
В том случае, если требуется сразу отобразить список товара, следует выставить «Да» в свойстве «Сразу показывать список товаров». Как только исполнение операции достигнет такого действия, на экране сразу же будет выведен список товаров для выбора.
Состав выводимого списка управляется свойствами из группы «Данные» и свойством «Ограничивать товарами документа» из группы «Главные настройки поиска и выбора товаров».
Два самых распространенных вариантов списка — это полный список всех товаров и список только тех товаров, что присутствуют в документе. Обоих можно добиться одним только свойством «Ограничивать товарами документа». Если оно выставлено в «Нет», то список окажется полным, в противном случае в списке будут только товары по накладной.
Для настройки отображения списка существует свойство «Формат позиций окна выбора из списка». Свойство принимает текстовый шаблон отображения позиции номенклатуры. Каждая позиция в списке — это пара «товар + упаковка», поэтому для обращения к номенклатуре и её упаковке в шаблоне используются пути «Item.Product» и «Item.Packing».
Например, шаблон с форматированием<Blue>{Item.Packing.Barcode}—{Item.Packing.Marking}</Blue> {Item.Product.Name:(0:E12)}выведет на экран то, что изображено на скриншоте.
-
Распознавание товара по штрихкоду, артикулу или коду
Иногда необходимо найти в справочнике товар по заранее известному коду или артикулу, который указан где-то в документе, в переменной или просто равен «12345», допустим.
Для решения этой задачи в действии выбора номенклатуры предусмотрены сво йства «Переменная штрихкода товара» и «Обработать штрихкод из сессии». «Переменная штрихкода товара» используется для хранения штрихкода. При сканировании товара туда попадает сканированный штрихкод. При выборе товара из списка туда чаще всего попадает «0» (т.к. для вызова списка в окне штрихкода вводится «0»). Это происходит по факту выбора, и если ничего выбрано или сканировано не было, то переменная не трогается.
Однако, если выставить в «Да» свойство «Обработать штрихкод из сессии», то действие выбора номенклатуры заглянет в переменную еще до начала выбора. Вместо ожидания ввода пользователя будет произведен автоматический поиск номенклатуры на совпадение штрихкода, кода или артикула со строкой, хранящейся в указанной переменной.
Например, можно поместить в переменную «МойТовар» значение «001» и затем выставить
«Переменная штрихкода товара» = «{МойТовар}», «Обработать штрихкод из сессии» = «Да». В этом случае действие выбора номенклатуры будет искать в справочнике товар, соответствующий строке «001». Как и при обычном сканировании товара, результат поиска может быть таким:- Товар не был найден — издается громкий звук ошибки;
- Был найден единственный товар — он кладется в сессию в переменную «SelectedProduct», а исполнение переходит либо к действию, указанному в свойстве «При удачном выборе», либо просто к следующему действию в дереве (если свойство пустое);
- Найдено несколько товаров — в зависимости от значения свойства «Автоматический выбор первого товара из списка» на экран либо выводится список найденных, либо выбирается первый же найденный товар и всё происходит как в пункте 2.
Следовательно, для полностью автоматического выбора заранее известного товара по его штрихкоду, коду или артикулу, необходимо выставить
«Переменная штрихкода товара» = «{<Какая-то моя переменная>}», «Обработать штрихкод из сессии» = «Да», «Автоматический выбор первого найденного товара» = «Да».
Входные параметры
Параметры, которые может использовать действие (всегда, или в каком то определенном режиме).
| Параметр | Значение | Описание |
{ScannedBarcode} | Строка | Штрихкод товара для поиска, если включен режим «Обработать штрихкод из сессии». |
Результат работы
| Параметр | Значение | Описание |
| --- | --- | --- |
{SelectedProduct} | Товар с упаковкой | Найденный товар с упаковкой, количеством и дополнительными полями. |
{ScannedBarcode} | Строка | Отсканированный для поиска штрихкод. |
{EAN128} | Объект | Специальный объект EAN128, создаваемый при обработке штрихкода соответствующего типа. |
Настройки действия
Полный список свойств данного действия следующий:
.Главное
| Свойство | Значение | Описание |
| Имя | Имя действия | Должно быть заполнено для задания на него переходов. Имя можно не указывать. В этом случае на такое действие нельзя задать явного перехода по какому-либо событию или условию. |
Главные настройки поиска и выбора товара
| Свойство | Значение | Описание |
| Автоматический выбор первого найденного товара | Да | Нет | Определяет, следует ли автоматически выбирать первый же найденный товар. Да — выбрать и перейти к следующему действию. Нет — вывести список товаров для ручного выбора. |
| Игнорировать базовый штрихкод товара | Да | Нет | Если Да, то поиск будет учитывать только штрихкоды упаковок, но не штрихкоды товаров. |
| Игнорировать политику ввода кол-ва | Да | Нет | Игнорировать политику учета товара, даже если она у товара выставлена. |
| Обработать штрихкод из сессии | Да | Нет | Определяет, использовать ли переменную для хранения штрихкода не для того, чтобы занести туда результат, а для того, чтобы взять оттуда штрихкод на распознавание. Эта возможность позволяет выбрать известный товар в автоматическом режиме без запроса к пользователю. |
| Ограничивать товарами д окумента | Да | Нет | Признак, того, что справочник продуктов при поиске и отображении ограничивается позициями, присутствующими в документе. |
| Переменная штрихкода товара | Строка | Имя переменной сессии, используемой для хранения введенного штрихкода товара. По-умолчанию 'ScannedBarcode', если задать пустое значение (null), штрихкод в сессии сохранен не будет. |
| Смена регистра штрихкода | Без изменения | К верхнему регистру | К нижнему регистру | Задает тип изменения регистра символов введенного штрихкода. |
Данные
| Свойство | Значение | Описание |
| Источник списка товаров | Шаблоны источника | Позволяет создать с помощью шаблонов источник, в котором содержится список товаров для выбора и поиска. Поддерживаются типы — Product и ProductCollection. |
Интерфейс
| Свойство | Значение | Описание |
| Звук при переходе по ошибке | Да | Нет | Определяет, будет ли проигран звуковой сигнал при переходе по ошибке, если товар не найден в справочнике. |
| Полноэкранный режим | Зависит от старшего | Да | Нет | Определяет выводить ли окно действия в полноэкранном режиме (без верхних и нижних панелей, меню и т.д.). |
| Полноэкранный режим (значение) | Да | Нет | Отображает будет ли действие выводиться в полноэкранном режиме с учетом указания на полноэкранный режим для родительских действий и типа документа. |
| Текст в верхней части окна | Строка | Информационный текст, отображаемый в заглавии страницы при выполнении действия могут применяться шаблоны. |
| Текст в самом окне | Строка | Вступительный текст. |
Интерфейс для киоск-режима
| Свойство | Значение | Описание |
| Без визуальных элементов | Да | Нет | Действие открывается вообще без каких-либо визуальных элементов управления, кроме фона. Обычно применяется совместно с простановкой фонового изображения на микрокиосках. |
| Фоновое изображение | Путь к файлу изображения | Относительный или абсолютный путь к файлу фонового изображения. |
| Фоновое изображение во время поиска | Путь к файлу изображения | Относительный или абсолютный путь к файлу изображения, сменяющего фон во время поиска товара. |
Общее
| Свойство | Значение | Описание |
| Время бездействия | Время в секундах | Время бездействия, после которого будет выполнен переход на другое действие. |
| Переход по бездействию | Отмена действия | Возврат на одно действие | Завершить документ | Прервать работу с документом | Возврат документа | или переход к любому выбранному действию из списка | Куда будет выполнен переход по бездействию. |
Окно выбора из списка
| Свойство | Значение | Описание |
| Автоматический выбор единственного товара из списка | Да | Нет | Опр еделяет, следует ли автоматически выбирать товар из списка товаров при вводе в качестве штрихкода «0», если в списке всего один товар. Да — выбрать и перейти к следующему действию. Нет — вывести в списке наименование товара для подтверждения выбора. |
| Заголовок окна выбора товара из списка | Строка | Текст, выводимый в заголовке окна со списком товаров. |
| Позволять выбор из списка по «0» | Да | Нет | Признак того, разрешено ли отображение списка товаров для выбора с помощью введения «0» в качестве штрихкода. |
| Сразу показывать список товаров | Да | Нет | Включает режим выбора продукта без штрихкода, из списка. Для вывода онлайн справочника ДОЛЖНО быть выставлено древовидное отображение товаров. |
| Формат позиций окна выбора из списка | Задает формат отображения позиций для окна выбора товара. Может быть задано шаблоном с форматированием. |
Тексты сообщений об ошибках
| Свойство | Значение | Описание |
| Если товар не найден (текст сообщения об ошибке) | Строка | Текст ошибки на случай, если товар не найден. Может быть задан с форматированием. |
Управление
| Свойство | Значение | Описание |
| Если товар найден | Имя действия | Действие, на который произойдет переход в случае удачного выбора товара. |
| Если товар не найден | Имя действия | Действие, на которое произойдет переход в случае, если товар не найден. |
Управление отменой по Escape и стеком отмен
| Свойство | Значение | Описание |
| Запомнить на стеке | Да | Нет | Флаг, указывающий, следует ли сохранять состояние сессии перед выполнением данного действия. Позволяет организовывать правильные алгоритмы отмены выполнения действий. |
| Отмена действия по Escape | Отмена действия | Возврат на одно действие | Завершить документ | Прервать работу с документом | Возврат документа | или переход к любому выбранному действию из списка | Тип отмены действия. Действие, на который произойдет переход в случае нажатия Esc. |
Ячейки и палеты
| Свойство | Значение | Описание |
| Выбирать палету сканированием | Да | Нет | Может ли по введенному штрихкоду, помимо поиска товара, производиться и поиск палеты. |
| Выбирать ячейку сканированием | Да | Нет | Может ли по введенному штрихкоду, помимо поиска товара, производиться и поиск ячейки. |
| Перейти по выбору палеты | Имя действия | Действие, на который произойдет переход в том случае, если сканированный штрихкод оказался штрихкодом палеты. |
| Перейти по выбору ячейки | Имя действия | Действие, на который произойдет переход в том случае, если сканированный штрихкод оказался штрихкодом ячейки. |
| Переменная хранилища | Имя переменной | Имя переменной, которая будет использована для хранения сканированной ячейки или палеты. |
| Текст выбора палеты | Строка | Текст сообщения, отображаемый в том случае, если сканированный штрихкод оказался штрихкодом палеты. |
| Текст выбора ячейки | Строка | Тест сообщения, отображаемого при удачном распознавании штрихкода как штрихкода ячейки (см. Выбирать ячейку сканированием). |
Выбор Да Нет
Действие «Выбор Да/Нет» — визуальное действие позволяет выводить на экран вопрос с кнопками выбора «Да», «Нет». В зависимости от выбранного ответа будет выполнен переход на другое действие. В тексте могут применяться шаблоны
Скриншоты
Настройки действия
Полный список свойств данного действия следующий:
.Главное
| Свойство | Значение | Описание |
| Имя | Имя действия | Должно быть заполнено для задания на него переходов. Имя можно не указывать. В этом случае на такое действие нельзя задать явного перехода по какому-либо событию или условию. |
Интерфейс
| Свойство | Значение | Описание |
| Текст вопроса | Текст сообщения | Могут применяться шаблоны. Подробнее смотрите «Тексты и математические выражения в Mobile SMARTS». |
Управление
| Свойство | Значение | Описание |
| При выборе «Да» | Имя действия | Имя действия для перехода в случае ответа Да. |
| При выборе «Нет» | Имя действия | Имя действия для перехода в случае ответа Нет. |
Управление отменой по Escape и стеком отмен
| Свойство | Значение |






























