Можно использовать оператор сравнения для определения того, что будет отображаться в столбцах представления, но можно также использовать его как счетчик! Так как в 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() дает возможность выполнить ряд операторов, следующих за условным оператором.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.