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

Операторы if и for: различия между версиями

Материал из Химсофт Вики
Строка 43: Строка 43:
==If==
==If==


Синтаксис 1:
===Синтаксис 1:===


[if ЛогическоеВыражение]Фрагмент для «истины»[endif]
<code>[if ЛогическоеВыражение]Фрагмент для «истины»[endif]</code>


Смысл:
'''Смысл:'''
Вычисляется логическое выражение, и если результат – истина, то в прямоугольник вставляется фрагмент от закрывающей квадратной скобки оператора if до открывающей квадратной скобки оператора endif. Иначе всё от открывающей скобки оператора if до закрывающей скобки оператора endif пропускается.
Вычисляется логическое выражение, и если результат – истина, то в прямоугольник вставляется фрагмент от закрывающей квадратной скобки оператора <code>if</code> до открывающей квадратной скобки оператора <code>endif</code>.  


Пример:
Иначе всё от открывающей скобки оператора <code>if</code> до закрывающей скобки оператора <code>endif</code> пропускается.
 
'''Пример:'''
<syntaxhighlight>
[if не[Результат анализа -> Значение показателя]:Пусто
[if не[Результат анализа -> Значение показателя]:Пусто
и [Результат анализа -> Значение показателя]!=0
и [Результат анализа -> Значение показателя]!=0
][Результат анализа -> Значение показателя] г/см2[
][Результат анализа -> Значение показателя] г/см2[
endif]
endif]
</syntaxhighlight>
===Синтаксис 2:===
<code>[if ЛогическоеВыражение]Фрагмент для “истины»[else]Фрагмент для “лжи»[endif]</code>


Синтаксис 2:
'''Смысл:'''
[if ЛогическоеВыражение]Фрагмент для “истины»[else]Фрагмент для “лжи»[endif]
Вычисляется логическое выражение, и если результат – истина, то в прямоугольник вставляется фрагмент от закрывающей квадратной скобки оператора <code>if</code> до открывающей квадратной скобки оператора <code>else</code>.


Смысл:
Иначе вставляется фрагмент от <code>else</code> до <code>endif</code>.
Вычисляется логическое выражение, и если результат – истина, то в прямоугольник вставляется фрагмент от закрывающей квадратной скобки оператора if до открывающей квадратной скобки оператора else. Иначе вставляется фрагмент от else до endif.


Пример:
'''Пример:'''
<syntaxhighlight>
[if [Результат анализа -> Значение показателя]<=[Результат анализа -> норма]
[if [Результат анализа -> Значение показателя]<=[Результат анализа -> норма]
][Результат анализа -> Значение показателя][
][Результат анализа -> Значение показателя][
Строка 68: Строка 75:
][Результат анализа -> Значение показателя][
][Результат анализа -> Значение показателя][
endif]
endif]
</syntaxhighlight>


==For==
==For==

Версия от 06:28, 18 февраля 2026

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