Мы сделали сканирование. А как теперь сделать, чтобы было видно, что за штрихкод мы отсканировали?
Все «визуальные» действия системы (те действия, которые имеют пользовательский интерфейс для взаимодействия с пользователем) имеют возможности по настройке своего внешнего вида и выводу сопроводительных текстов для пользователя.
Обычно требуется выводить не только какой-то статический текст, например, «Отсканируйте штрихкод», но и доп. информацию о документе и выполняемых действиях. Например, в действии ввода количества после сканирования разумно было бы показать: какой штрихкод был отсканирован, какой товар был по нему найден, в какой упаковке.
Напомним, что все необходимые данные лежат у нас в сессии, и остается только отобразить их. Для этого в Mobile SMARTS сделан механизм шаблонов. Вместо статического текста мы можем использовать текст с «шаблонами» - вставками в текст, которые будут заменены на конкреные значения из сессии. Такие вставки обрамляются фигурными скобками {…}, между которыми пишется путь к необходимым значениям в сессии. Такой путь может быть простым, состоящим просто из имени объекта, либо составным, ссылающимся на данные внутри объекта.
{ScannedBarcode} – действие выбора номенклатуры заносит в эту переменную отсканированный штрихкод (либо введенный вручную штрихкод, код или артикул).
{SelectedProduct} – действие выбора номенклатуры заносит в эту переменную товар, который был распознан по штрихкоду (коду, артикулу) или выбран пользователем.
{SelectedProduct.Product.Name} – название товара, который был отсканирован или выбран вручную.
В редакторе текстов в Панели управления встроена помощь по шаблонам, куда внесены наиболее часто используемые варианты:
Теперь перейдем к нашей задаче. Как и было предложено, отобразим в действии ввода количества данные об отсканированном штрихкоде и выбранном при этом товаре.
Для этого в действии «Ввод количества» отредактируем свойство «текст в верхней части окна».
Добавим следующую надпись: «{ScannedBarcode} - {SelectedProduct.Product.Name}». Это означает что после операции сканирования в верхней части окна будет отображаться непосредственно сам отсканированный штрихкод и через «тире» наименование найденного товара. В редакторе и на ТСД выглядеть это будет следующим образом:
|
Отлично, действие ввода количествава отображает необходимый нам текст.
Теперь перейдем назад, к действию выбора номенклатуры. После того, как мы вводим количество и данные записываются в документ, наш процесс опять возвращается к выбору номенклатуры, и было бы удобно, если бы он отображал информацию по последней сканированной позиции и введенному нами количеству.
Для этого в заполним в выборе номенклатуры свойство «текст в верхней части окна».
Тут мы зададим следующий шаблон:
{SelectedProduct.Product.Name}
<r color=”blue”>{SelectedProduct.QuantityString:Сканировано (0)}</r>
Результат на терминале будет выглядеть так:
Обратите внимание, что мы применили две дополнительных возможности отображения информации.
Во-первых, это псевдо-html тэги для визуального оформления текста (описание возможных тэгов можно посмотреть в документации к платформе, либо прямо в панели управления). Мы указали, чтобы информация о количества отображалась синим цветом.
Во-вторых, форматирование: запись вида {путь_к_данным:формат_отображения}. SelectedProduct.QuantityString – это путь по которому можно получить текстовое представление количества вместе с именем упаковки внутри {SelectedProduct} (например, «3 шт.»). Сканировано (0) – это формат отображения этих данных, т.е. вместо «3 шт.» - будет отображаться «Сканировано 3 шт.» (запись (0) указывает, куда должны быть вставлены исходные данные).
Зачем это надо? Ведь мы можем просто написать
Сканировано {SelectedProduct.QuantityString}
И получить тот же результат на экране?
Потому что разница есть. Она видна при первом заходе в документ, когда еще не было сделано ни одного сканирования товара, и объект {SelectedProduct} еще ни разу не был выставлен в сессии. Если объект в сессии не найден, то шаблон в фигурных скобках будет иметь пустое значение, и на его месте просто ничего не отобразится. А вот статический тест прекрасно отобразится!
Поэтому в варианте с форматированием «{SelectedProduct.QuantityString: Сканировано (0)}», если товара нет, ничего не отобразится. А в варианте «Сканировано {SelectedProduct.QuantityString}» останется отдельно висящее слово «Сканировано»:
Использование форматов позволяет избегать таких ситуаций.