Операторы if и for
Операторы if и for – это замена для функций if и str2.
Дело в том, что функции работают в выражениях внутри квадратных скобок, где все изменения формата текста игнорируются.
Операторы работают непосредственно с форматированным текстом, что открывает множество возможностей.
Общие правила пользования операторами
Операторы – это специальные ключевые слова, вставляемые в текст прямоугольника в квадратных скобках.
Фрагменты текста между операторами вставляются от скобки до скобки, поэтому необходимо помнить, что они должны вплотную прилегать к скобкам, без всяких пробелов и пр.
Ключевые слова не чувствительны к регистру букв. То есть, нет разницы, как писать - else, ELSE или Else.
Внутри скобок допустимы пробелы и переходы на новую строку.
Также можно менять формат текста внутри скобок – это ни на что не повлияет.
Всё это даёт возможность сделать текст прямоугольника более «читабельным».
Пример:
[if не [Результаты->Значение]:Пусто][if [Результаты->Значение]<[Результаты->Минимум]][Результаты->Минимум][else][Результаты->Значение][endif][else] - [endif]
Это же самое выражение можно записать следующим образом:
[if не [Результаты->Значение]:Пусто][
if [Результаты->Значение]<[Результаты->Минимум]]<[Результаты->Минимум][
else
][Результаты->Значение][
endif][
else
] - [
endif]Фрагменты текста из операторов не просто вставляются, а интерпретируются точно так же, как обычный исходный текст прямоугольника.
То есть внутри этих фрагментов также можно использовать операторы.
Примечание: обратите внимание на оформление вложенных друг в друга операторов "лесенкой". Рекомендуется делать так же, т.к. будет намного легче читать прописанное условие.
If
Синтаксис 1:
[if ЛогическоеВыражение]Фрагмент для «истины»[endif]
Смысл:
Вычисляется логическое выражение, и если результат – истина, то в прямоугольник вставляется фрагмент от закрывающей квадратной скобки оператора if до открывающей квадратной скобки оператора endif.
Иначе всё от открывающей скобки оператора if до закрывающей скобки оператора endif пропускается.
Пример:
[if не[Результат анализа -> Значение показателя]:Пусто
и [Результат анализа -> Значение показателя]!=0
][Результат анализа -> Значение показателя] г/см2[
endif]Синтаксис 2:
[if ЛогическоеВыражение]Фрагмент для “истины»[else]Фрагмент для “лжи»[endif]
Смысл:
Вычисляется логическое выражение, и если результат – истина, то в прямоугольник вставляется фрагмент от закрывающей квадратной скобки оператора if до открывающей квадратной скобки оператора else.
Иначе вставляется фрагмент от else до endif.
Пример:
[if [Результат анализа -> Значение показателя]<=[Результат анализа -> норма]
][Результат анализа -> Значение показателя][
else
][Результат анализа -> Значение показателя][
endif]For
Синтаксис 1:
[for Запрос]Фрагмент для повторения[endfor]
Смысл: Фрагмент повторяется для каждой записи из запроса с указанным названием от первой до последней.
Пример: Вывести перечень показателей в ячейке.
[for Показатели
][Показатели -> Название]
[endfor]В результате все показатели будут перечислены в столбик (каждый – на новой строке, т.к. строка кончается до открывающей скобки endfor.
Синтаксис 2:
[for Запрос]Фрагмент для повторения[!]Фрагмент-разделитель[endfor]
Смысл: Для каждой записи указанного запроса, от первой до последней, в прямоугольник вставляются фрагменты для повторения. После каждого фрагмента, кроме последнего, следует фрагмент-разделитель.
Пример:
Вывести перечень показателей в ячейке через символ ;
[for Показатели
][Показатели -> Название][
!]; [
endfor]Примечание. Если в запросе пустота, то функция отрабатывает один раз с значением ПУСТО.
Т.е. если выводится только значение [for Примечание][Примечание -> Строка][!], [endfor]
то вы ничего не заметите
но, если внутри функции есть какие-то дополнительные символы/переменные,
то выходит некорректно [for Примечание][Примечание -> Строка] - значение[!], [endfor] ->
в результате будет - значение.