Перейти к содержанию

Операторы 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] -> в результате будет -значение.