Язык @-формул в LotusDomino R 6.

Ключевые слова


DEFAULT имя_поля := значение

Область применения: без ограничений.

На время выполнения формулы присваивает полю с именем имя_поля

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

в документе присутствует, то конструкция не оказывает никакого воздействия.

ENVIRONMENT переменная_окружения

:= "значение"

Область применения: нельзя использовать в формулах отбора, колонок, видимости объекта и навигатора. Ограниченно применима в формулах всплывающих окон. В Web-приложениях выдает пользовательские Web-переменные окружения.

Присваивает значение текстовой строки переменной_окружения

(среды). Данные переменные сохраняются либо в файле NOTES.INI (для операционных систем Windows, OS/2 и UNIX), или в Notes Preferences файле (для Macintosh). Действие ключевого слова аналогично выполнению встроенной @-функции @SetEnvironment.

Для возврата значений таких переменных используется функция @Environment:

FIELD FieldName := @Environment( "EnvVariable" )

В Web-приложениях, используя предопределенные имена полей, с помощью функций работы с переменными окружения можно получить пользовательские Web-переменные окружения. В данном случае используется механизм CGI (Common Gateway Interface).



J FIELD имя_поля := значение

Область применения: нельзя использовать в формулах отбора, колонок, видимости объекта, заголовка окна, формы и навигатора.

Присваивает значение полю с именем имя_поля. Данное поле сохраняется в документе (в отличие от временных переменных). Может быть использовано как для создания новых, так и для изменения существующих полей. При создании новых полей разработчик должен сам следить за тем, чтобы имя_поля

было уникально в пределах текущего документа.

В R 6 язык снято ограничение, запрещающее использование ключевого слова FIELD


в качестве параметров других функций (например, @Do или @If). Соответственно допускается и вложенное использование FIELD. Для предыдущих версий (включая R5) это ограничение действительно.

Пример. В R 6 полю a1 и временной переменной c присвоится значение “123”, а полю a2 - “12345”.

Field a2 := @Do( c:= Field a1 := "123"; c + "45");

В документации на данное ключевое слово приведено два замечания. Первое - рекомендует внутри других функций использовать вместо ключевого слова FIELD функцию @SetField. Во втором говорится, что в определенных случаях формула должна возвращать некое значения (например, формула кнопки). Поэтому для предупреждения возникновения ошибки типа "No Main or Selection expression in formula" (нет главного выражения или оператора отбора в формуле) рекомендуется добавить после оператора с ключевым словом FIELD новый оператор возвращающий значение (например, "" или Select @All).

Строгое следование данным замечаниям действительно на 100% избавит от описываемых ошибок. Однако с другой стороны, в R 6 снято ограничение, запрещающее использование ключевого слова FIELD в качестве параметров других функций, и кроме этого ключевое слово FIELD теперь возвращает значение. Помимо этого при сохранении формул, требующих возвращаемого значения (например, формула кнопки), Domino обычно добавляет в конец формулы функцию @True. Данное правило выполняется не всегда, например, если определить обработчик события onLoad формы на языке @-формул в виде «FIELD a2 := "45";», то в результате как раз и получим сообщение об ошибке "No Main or Selection expression in formula".

REM [ "комментарий" ]

J REM [ { комментарий } ]

Область применения: без ограничений.

Позволяет включить в формулу одну или несколько строк комментариев. В R 6 комментарии стало можно заключать в фигурные скобки. Это достаточно удобно при отладке @-формул, когда надо закомментировать какой-то фрагмент текста, а внутри него уже встречаются двойные кавычки. Символ «\» (обратный слеш) используется внутри комментария как Esc-символ, аналогично текстовым константам.



REM "Это строка \"комментария\"!";

REM {и это строка \\комментария};

SELECT формула

Область применения: разрешается использовать только в формулах отбора и агентах.

Определяет критерий для отбора документов, которые будут обрабатываться. Используется в формулах отбора видов, формулах селективной репликации, формулах агентов. Обрабатываются только те документы, для которых формула, возвращает значение "Истина". Ключевое слово SELECT должно быть самым первым оператором в формуле.

Для агентов критерий отбора может так же определяться в его окне свойств (например, All unread documents in view – все непрочитанные документы в виде), а также в объекте Document Selection из объектно-событийной панели агента. Тем не менее, даже в этом случае в теле агента можно использовать ключевое слово SELECT. Критерий отбора документов для агента будет тогда определяться путем объединения перечисленных условий. При селективной репликации наблюдается похожая картина с использованием ключевого слова SELECT.

Пример 1. Выбор всех документов:

SELECT @All

Пример 2. Отбор документов в вид или при репликациях. Выбираются все документы, созданные по форме "Описание фирмы" и все их "потомки" - ответные документы всех уровней иерархии.

SELECT Form = "Описание фирмы" | @AllDescendants;

При использовании в формуле операции сравнения со значением поля, которого в документе нет, такая формула всегда возвращает значение 0 (FALSE). Для решения проблемы можно воспользоваться функциями @IsAvailable или @IsUnavailable.

Ключевое слово всегда должно быть стоять первым в операторе. При запоминании формулы ключевые слова всегда преобразуются к верхнему регистру. В операторах с ключевыми словами DEFAULT, ENVIRONMENT и FIELD значения имя_поля и переменная_окружения не должны быть текстовыми константами.


Содержание раздела