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

Операторы if и for

Материал из Химсофт Вики
Версия от 06:20, 18 февраля 2026; Sidminik (обсуждение | вклад) (Новая страница: «Операторы <code>if</code> и <code>for</code> – это замена для функций <code>if</code> и <code>str2</code>. Дело в том, что функции работают в выражениях внутри квадратных скобок, где все изменения формата текста игнорируются. Операторы работают непосредственно с форматированным...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

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