работаем удаленно
от Владивостока до Калининграда
с 7-00 до 19-00

Как показать название отсканированого товара

Последние изменения: 21.01.2020

Мы сделали сканирование.  А как теперь сделать, чтобы было видно, что за штрихкод мы отсканировали?

Все «визуальные» действия системы (те действия, которые имеют пользовательский интерфейс для взаимодействия с пользователем) имеют возможности по настройке своего внешнего вида и выводу сопроводительных текстов для пользователя.

Обычно требуется выводить не только какой-то статический текст, например, «Отсканируйте штрихкод», но и доп. информацию о документе и выполняемых действиях. Например, в действии ввода количества после сканирования разумно было бы показать:  какой штрихкод был отсканирован, какой товар был по нему найден, в какой упаковке.

Напомним, что все необходимые данные лежат у нас в сессии, и остается только отобразить их. Для этого в 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}» останется отдельно висящее слово «Сканировано»:

Использование форматов позволяет избегать таких ситуаций.