Тег foreach выполняет перебор по элементу-контейнеру всех пар ключ-значение и размещает их в области видимости дочерних узлов.
Атрибуты тега foreach
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
var | строковый | Имя или значение переменной | Не обязателен |
container | строковый в формате JSON | Область перебора |
В переменную counter
из таблицы documents.carditem
получаются значения счетчиков, которые затем выводятся при печати в отчет. На печать для каждого счетчика будут выведены переменные ключ counter.key
и значение counter.value
.
<select query="select coalesce(counters) as counters from documents.carditem where documentid = $document.id$"> <foreach var="counter" container="counters"> <var name="counter.key"/><text>: </text><var name="counter.value"/><br/> </foreach> </select> |
Если атрибут counter
не задан, то переменным с id
счетчика и значением счетчика можно сразу присвоить имена key
и value:
<select query="select coalesce(counters) as counters from documents.carditem where documentid = $document.id$"> <foreach container="counters"> <var name="key"/><text>: </text><var name="value"/><br/> <if var="key" op="eq" value="777"> <text>Сработала акция со счетчиком 777</text><br/> <text>и его значение:</text><var name="value"/><br/> </if> </foreach> </select> |
Используя значения счетчика, можно настроить различное поведение для печати на чеке.
Пусть существует набор счетчиков, значения которых необходимо проверить и указать соответственно каждому некоторый статус карты.
Если в файле sale.xml задать следующую схему, где вместо ??? указать id счетчика:
В этом случае при печати чека в каждом из случаев будет следующее поведение:
|