Шаблон текста для отображения в окне может содержать любое количество выражений вперемешку с обычным текстом. Например, «Выбрано: {ScanedBarcode} — {SelectedProduct}». Такая строка позволит выводить на экран сообщения вида «Выбрано: 2345069545 — картофель мороженый (пачка)», где ScanedBarcode и SelectedProduct заменяются соответствующими значениями, хранящимися в сессии.
Всё до первого двоеточия ({путь к значению[:формат]}) является указанием на то, что выводить, всё после — форматом вывода значения в строку. Формат зависит от типа значения — строка это, число, дата или что-то другое. Для правильного использования формата нужно знать, каков будет тип значения. Двоеточия может и не быть, т.е. часть с форматом необязательная — если формат не указан, то используется формат по умолчанию для соответствующего типа значений.
Для написания шаблонов в редакторе текстов в «Панели управления» встроена помощь по шаблонам, куда внесены наиболее часто используемые варианты.
И синтаксис пути к значению, и синтаксис формата взяты из языка C# и спецификаций библиотеки Microsoft .NET. В .NET и, соответственно, в Mobile SMARTS всё является объектами — и строки, и числа, и более сложные вещи, такие как номенклатура, штрихкоды или складские документы. Источником данных для выражений является сессия исполнения документа, которая представляет собой просто набор переменных. Системные переменные и все переменные, заведенные разработчиком операции, складываются в одну кучу — сессию. В сессии лежит и сам обрабатываемый документ.
Поля в объекте, такие как номер документа или набор его строк, в .NET называются свойствами объекта. У каждого такого свойства есть своё имя. Зная имя свойства можно получить значение этого свойства у конкретного объекта. Это значение также будет являться объектом, у которого есть свои свойства и т.д., при этом одно имя свойства отделяется от другого точкой. Кроме свойств у объектов есть методы — это функции, значение которых вычисляет сам объект. Синтаксис вызова метода — имя метода с круглыми скобками «()», в которых указываются передаваемые параметры. Таким образом, можно строить цепочки из обращения к свойствам и методам, чтобы получить из объекта нужные данные.
Соответственно, самый простой пример пути к значению — строка из имен свойств и методов со скобками, разделенных точками. Кроме этого выражения могут содержать арифметические операции, т.е. не просто значение свойства или вызов метода, но и сумма значений двух свойств или произведение результата вызова метода на число + sin(10).
Следует всегда иметь в виду, что результатом обработки шаблона является текст. Поэтому, если a = 7 и b = 1, например, то не стоит путать следующие шаблоны:
{a} - {b}» даст в результате «7 - 1», и только шаблон
«{a - b}» даст «6».
Другой из примеров пути к значению — указание специального объекта «global::», после которого идет указание на вызов статического метода или взятие значения статического свойства (.NET), а далее можно указать путь от полученного результата.
В том случае, если система не может вычислить значения или оно равно (null), ничего выведено не будет.
При задании шаблона можно указывать шаблон вывода значения. Например, « {SelectedProduct.ExpireDate: Срок годности — (0)} » отобразит что-то вроде «Срок годности — 01 мая 2009». А «{SelectedProduct.ExpireDate: Срок годности — (0:MM$$yyyy)}» отобразит что-то вроде «Срок годности — 05$$2009».
Если срок годности не задан (т.е. если поле не существует или равно null), то не будет выведено ничего: ни даты, ни текста «Срок годности –». Это очень удобно для условного вывода значений. Можно указать целую страницу шаблонов для вывода различных возможных свойств номенклатуры, например, а на экране получить строки только для тех свойств, которые реально присутствуют. Не существующие или не проставленные свойства, а также их «окаймление» в виде разных подписей и пояснений, просто не будут отображены.