Основы языка формул. Синтаксис и лексические элементы формул, страница 3

Можно использовать оператор сравнения для определения того, что будет отображаться в столбцах представления, но можно также использовать его как счетчик! Так как в Domino отсутствуют данные типа Boolean, можно использовать тот факт, что операция сравнения возвращает значение 1 (если результат сравнения истинен) и значение 0 (если результат сравнения ложен). Если вспомнить предыдущий пример, то формула для столбца представления:

@Contains(cLastAgent; "Manager  Notification")

создает в столбце удобный счетчик, суммирующий число уведомлений, отправленных менеджеру.

Условные операторы

В языке формул имеется только один условный оператор: @If(). Основная форма оператора @If() имеет три составляющие части: условие; оператор, выполняемый, если условие истинно; оператор, выполняемый, если условие ложно. Данная форма оператора @If() имеет следующий синтаксис:

@If (условие; оператор, если условие истинно; оператор, если условие ложно)

Операторы для истинного и ложного условий могут быть любого типа, за исключением оператора присваивания. Вот пример этой простой формы оператора @If():

@If (сТуре="Lesson";"Lesson+nLesson;   "Appendix:"   +   cAppendix)

Если использовать этот оператор в качестве формулы для столбца представления, то в зависимости от значения поля сТуре он отобразит в столбце либо слово Lesson плюс номер урока, либо слово Appendix плюс букву, определяющую приложение.

Если в условии используется поле, принимающее несколько значений, то конструкция @If() может быть расширена следующим образом:

@if (1-е условие; оператор, если 1-е усл. истинно; 2-е условие; оператор,

если 2-е усл. истинно; [...] оператор, если все усл. ложны)

Если первое условие ложно, то производится проверка второго условия. Если имеется несколько условий, их проверка происходит в направлении слева направо. . Конструкция @If() всегда должна иметь нечетное число аргументов, независимо от того, сколько условий имеется в операторе. Фактически, это подобно оператору CASE в других языках программирования.

В операторы @If() можно вкладывать другие операторы @If(). Например, можно  задать следующую формулу для события Value вычисляемого поля:

@If (@IsNewDoc & @IsDocBeingSaved; "Blue";

 @If (cColor = "Green"; "Purple"; "Mauve")) 

Управляющие операторы |

Следующие три  функции обеспечивают необходимую логику управления:

•   @If)

•   @Return() 

•   @Do()

Функция @If() была рассмотрена в предыдущем разделе.

Функция @Return()- это очень полезная функция, которая прекращает выполнение формулы.

Функцию @Do() можно использовать для выполнения в направлении слева направо ряда операторов, расположенных в одной строке.

Функции @Return()и @Do()часто применяются в комбинации с функцией @If(), что обеспечивает для формул большую степень гибкости. В следующем фрагменте кода проверяется, не хочет ли пользователь отказаться от запроса. Если отказ не требуется, то выполняется функция @Return(),которая прекращает выполнение оставшейся части формулы. Если пользователь решает продолжить выполнение формулы, то открывается диалоговое окно, в котором пользователь вводит причину своего решения.

REM "При отказе от запроса ввести причину отказа.";

jnAreYouSure := @Prompt ([YESNO]; "Are you sure?" ;

"Are you sure you want to deny this request?") ;

@If (jnAreYouSure; @Success; gReturn(""));

FIELD cDenial := cDenial;

jcDialog := @DialogBox( "dBoxDenial" ;

[AutoHorzFit] : [AutoVertFit] ; "Deny TSR" ) ;

 @SetField("cDocStatus"; "Denied");

@SetField("nStatusSort"; 99)

Функция @Do() дает возможность выполнить ряд операторов, следующих за условным оператором.