Использование полей

Шаблонизатор

Платформа Directual позволяет использовать шаблонизатор. Инструмент позволяет "провалиться" по связанным полям в другую структуру, либо вручную указать поле, которое вы хотите использовать.

Например, в кубике "Изменение объекта" мы выбираем слинкованное поле bookId и просим заменить его на значение из поля chatKey.lastMessageKey.text.

Поля элемента подставляются в выражениях в следующем виде:

{{name}}

, где name — системное название поля объекта, который обрабатывается в сценарии.

{{name}}

Это поле name, объекта, связанного с исходным объектом, обрабатывающимся в сценарии. При этом тип поля object_link должен быть типа link на структуру и содержать нужное значение OBJECT_ID привязанного объекта.

{{object_link.name}}

{‌{#escape}‌}{‌{name}‌}{‌{/escape}‌}

Экранирует специальные символы в внутри конструкции. Пусть name = 'aaaa"aaaa', то результат работы шаблонизатора: 'aaaa\"aaaa'

{{#escape}}{{name}}{{/escape}}

{{#stripNewLine}‌}test new line{‌{/stripNewLine}}

Функция для удаления переводов строки. Например, конструкция:

{{#stripNewLine}}test
new line{{/stripNewLine}}

вернёт значение 'test new line' в одну строку.

{‌{#escapeNewLine}‌}

Экранирует специальные символы переноса строки. Можно передавать многострочные JSON объекты в теле запроса в http-request, например, так:

{"telegram":"{{#escape}}{{#escapeNewline}}{{message}}{{/escapeNewline}}{{/escape}}"}

{{#formatDate|yyMMdd}}

Форматирование даты. Результатом этой конструкции будет значение 190501

{{#formatDate|yyMMdd}}2019-05-01T17:28:18{{/formatDate|yyMMdd}}

{{#is_vip}}vip{{/is_vip}}

В случае, если is_vip типа boolean и имеет значение true, инструкция будет заменена на слово "vip".

{{#is_vip}}vip{{/is_vip}}

{{^is_vip}}not vip{{/is_vip}} — в случае, если is_vip типа boolean и имеет значение false, инструкция будет заменена на строку "not vip". Этот и предыдущий виды инструкций выполняются только для полей типа boolean, в противном случае инструкция заменяется на пустую строку.

{{^is_vip}}not vip{{/is_vip}}

Для полей типа arrayLink предусмотрена возможность ссылаться на поле сликованной структуры с помощью инструкций вида {{#arrayLink_field_in_Struct1}}{{data from field in Struct2}}{{/arrayLink_field_in_Struct1}}. Этот вид инструкции выполняется только для полей типа arrayLink, в противном случае инструкция заменяется на пустую строку.

{{#arrayLink_field_in_Struct1}}{{data_from_field_in_Struct2}}{{/arrayLink_field_in_Struct1}}

Рассмотрим на примере кубика "Редактирование объекта":

Поле insrtuctionsLinkToTemplate имеет тип arrayLink и ссылается на структуру с полем instructions_value. В кубике изменения объекта указываем платформе записать значение instructions_value в поле instructions_result, а путь к нему лежит через insrtuctionsLinkToTemplate.

{{#array}}* {{.}} {{/array}}

{{#arr}}* {{.}} {{/arr}}
// если arr = [1, 2, 3], то результат шаблонизации будет равен '* 1 * 2 * 3 ' {{.}} - обращение к текущему элементу массива.

Предположим, значение поля musketeers имеет значения Athos, Aramis, D'Artagnan и кто-то ещё.

{ "musketeers": ["Athos", "Aramis", "", "D'Artagnan"] }

Результат выполнения конструкции

{{#musketeers}}
{{#.}}
* {{.}}
{{/.}}
{{/musketeers}}

будет список:

* Athos * Aramis * D'Artagnan

Конструкция вида '#Arr.../Arr' игнорируется, если ссылка на массив принимает значение null, undefined, false, 0, or NaN, а не на его элементы.

Парсинг JSON данных

В случае, если в поле объекта хранятся JSON данные, в платформе предусмотрена возможность работать с ними напрямую.

Исторически сложилось два подхода к такой обработке в шаблонизации. Через символ ">" или через точку. На данный момент поддерживаются оба варианта.

  • Парсинг вида {{json>key}}. Допустим, что поле json имеет тип данных string и содержит значение:

JSON
{
"id":1,
"key":"your value"
}

В таком случае, результатом шаблонизации {{json>key}} будет значение 'your value'.

  • Парсинг вида {{linkTo.json.key}} Предположим, в результате шаблонизации, мы ожидаем получить значение key из поля json в слинкованной структруре. В таком случае, обращаться можно через точку. Важно понимать, что поле json долно иметь тип данных JSON, иначе результат будет пустым.

JSON
{
"id":1,
"key":"your value"
}
  • Парсинг вида {{json.key1.key2}} вернёт значение ключа key2 из поля json.

{
"id":1,
"key1":{
"key2":"your value",
"onemore":"one_more_value"
}
}

Парсинг JSON через точку доступен только для полей с типом данных JSON

JS-интерпретатор

У заполняемых полей есть возможность воспринимать выражения, написанные на Java Script, благодаря встроенному интерпретатору.

Включение JS-интерпретатора

Если есть потребность вычислить выражение с использованием значения из шаблона, обязательно включайте галочку "Вычислить выражение" (Evaluate the expression). Если не включить чекбокс, то написанное выражение будет восприниматься как строка.

Например, конструкция {{id}}+1 прибавит к ID единицу, при условии корректного типа данных в ID.

В случае ошибки JS выражения движение объекта по сценарию будет остановлено.

Работа с датами

При работе с датами и временем возможно использование следующих переменных и выражений:

now (сегодняшняя дата и текущее время) today (сегодняшняя дата, время 00:00:00) +1 day, -1 days, etc. +5 hours, -4 hour, etc. +2 months, -3 month, etc. today -14 days, now +3 hours, today -12 months, etc. {{date}} +1 day — для поля типа date

Пример

Выражение: {{2016-11-16T16:03:31}} +45 days Результат: 2016-12-31T16:03:31

Как видно из примера, дата возвращается в формате по стандарту ISO-8601 (YYYY-MM-DDTHH:mm:ss.sssZ).