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

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

Материал из Химсофт Вики
 
(не показаны 2 промежуточные версии этого же участника)
Строка 78: Строка 78:


==For==
==For==
Синтаксис 1:
===Синтаксис 1:===
<code>[for Запрос]Фрагмент для повторения[endfor]</code>
<code>[for Запрос]Фрагмент для повторения[endfor]</code>


Смысл:
'''Смысл:'''
Фрагмент повторяется для каждой записи из запроса с указанным названием от первой до последней.
Фрагмент повторяется для каждой записи из запроса с указанным названием от первой до последней.


Пример:
'''Пример:'''
Вывести перечень показателей в ячейке.
Вывести перечень показателей в ячейке.


<syntaxhighlight>
[for Показатели  
[for Показатели  
][Показатели -> Название]
][Показатели -> Название]
[endfor]
[endfor]
</syntaxhighlight>


В результате все показатели будут перечислены в столбик (каждый – на новой строке, т.к. строка кончается до открывающей скобки <code>endfor</code>.
В результате все показатели будут перечислены в столбик (каждый – на новой строке, т.к. строка кончается до открывающей скобки <code>endfor</code>.


Синтаксис 2:
===Синтаксис 2:===
<code>[for Запрос]Фрагмент для повторения[!]Фрагмент-разделитель[endfor]</code>
<code>[for Запрос]Фрагмент для повторения[!]Фрагмент-разделитель[endfor]</code>


Смысл:
'''Смысл:'''
Для каждой записи указанного запроса, от первой до последней, в прямоугольник вставляются фрагменты для повторения. После каждого фрагмента, кроме последнего, следует фрагмент-разделитель.
Для каждой записи указанного запроса, от первой до последней, в прямоугольник вставляются фрагменты для повторения. После каждого фрагмента, кроме последнего, следует фрагмент-разделитель.


Пример:
'''Пример:'''
Вывести перечень показателей в ячейке через символ <code>;</code>
Вывести перечень показателей в ячейке через символ <code>;</code>


<syntaxhighlight>
[for Показатели  
[for Показатели  
][Показатели -> Название][
][Показатели -> Название][
!]; [
!]; [
endfor]
endfor]
</syntaxhighlight>


Примечание. Если в запросе пустота, то функция отрабатывает один раз с значением <code>ПУСТО</code>.
'''Примечание.''' Если в запросе пустота, то функция отрабатывает один раз с значением <code>ПУСТО</code>.
Т.е. если выводится только значение
Т.е. если выводится только значение <code>[for Примечание][Примечание -> Строка][!], [endfor]</code>  
<code>[for Примечание][Примечание -> Строка][!], [endfor]</code>
то вы ничего не заметите  
то вы ничего не заметите
но, если внутри функции есть какие-то дополнительные символы/переменные,  
но, если внутри функции есть какие-то дополнительные символы/переменные, то выходит некорректно
то выходит некорректно <code>[for Примечание][Примечание -> Строка] - значение[!], [endfor] -></code>  
<code>[for Примечание][Примечание -> Строка] - значение[!], [endfor] -></code> в результате будет
в результате будет - значение.
-значение.

Текущая версия от 06:35, 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] -> в результате будет - значение.