Тело шаблона состоит из произвольной структуры тегов форматирования входных данных и тегов выборки информации из базы данных. Построение выходной информации выполняется путем последовательного обхода тегов, которые составляют шаблон с максимальным погружением в глубину.
Для выборки информации из базы данных используется специальный тег select. Особенностью данного тега является многократный обход вложенных в него тегов.
На вложенные теги select распространяются правила выполнения вложенных циклов. Внутренний тег будет выполнен столько раз сколько элементов выборки содержит внешний. С помощью тегов select организуются циклы и ветвления (выполнение в зависимости от заданного условия). В запросах можно использовать параметры, которые выделяются символами "$".
Некорректный запрос select приводит к игнорированию обхода вложенных в него тегов. Ошибочный запрос с текстом ошибки записывается в лог программы.
Атрибуты тега select
| Наименование | Тип данных | Описание | Примечания |
|---|---|---|---|
| query | строковый | Запрос к базе данных | Используется синтаксис движка базы данных. Текущая база данных – documents |
<select query="select shiftnum, workshiftid from workshift">
<select query="select * from document where workshiftid = $workshiftid$">
...
</select>
</select>
Ниже приведен пример обхода содержимого шаблона. В данном контексте tag – любой тег форматирования выходных данных. Номерами указан порядок обхода тегов.
<?xml version="1.0" encoding="UTF-8"?>
<report name="sale" type="document" cached="true" title="Чек продажи">
<tag order="1">
<tag order="2">
<select query="...">
<!-- Для выборки, которая содержит три элемента, теги 3 и 4 будут разобраны трижды -->
<tag order="3"/>
<tag order="4"/>
</select>
</tag>
<tag order="5">
</tag>
</tag>
</report>
Обращение к примечаниям
<select query="select data noteresult from documents.noteitem where documentid='265'">
<op var="result" set="noteresult" cast="json"/>
<iterator name="result.dialogResult.data.text"/>
<text>result.dialogResult.data.text</text>
</select>
<op var="noteresult" set="document.pluginData.Notes.notes.1.noteResult.dialogResult.data"/>
<text>Текст: </text><iterator name="noteresult.text"/>