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

Выполнение формул, содержащих вызовы @-команд


Функция @PostedCommand используется в 4-й и выше версиях Domino как замена для @Command 3-х с целью обеспечения совместимости, поскольку @Command 4-й и выше версии выполняется иначе. Формула с @Command, написанная в 4-й и выше версии не может быть выполнена в 3-й.

При выполнении указанных в формуле действий Domino всегда выполняет функции @PostedCommand (как @Command в 3-й версии) в последнюю очередь. Если в формуле имеется несколько вызовов функции @PostedCommand, они обрабатываются в порядке появления, но после всех остальных операторов и @-функций. Даже если для изменения порядка действий используется @Do, функции @PostedCommand выполняются в последнюю очередь.

Например, предположим, что приведенная ниже формула содержит ряд выражений, заключенных в скобки внутри функции @Do:

FIELD X :=

    @If( условие;

        @Do( @PostedCommand1; @Prompt; @PostedCommand2 );

        @Error )

При вычислении, если условие истинно, указанные в @Do действия будут выполняться в следующем порядке:

(1) @Prompt

(2) @PostedCommand1

(3) @PostedCommand2

@Do выполняет все, не относящиеся к @PostedCommand действия в порядке слева направо; а после их завершения выполняет все @PostedCommand в том же порядке.

Предположим, вы пишете формулу, которая должна выполнять @PostedCommand, проверку @If, а затем несколько других действий, за которыми следует еще одна @PostedCommand. Domino выполнит действия в такой последовательности: проверка условия и соответствующее действие, затем прочие "обычные" действия, затем обе @PostedCommand.



Программа

(4) @PostedCommand( [имя_команды]; параметр );

(1) @If( Условие; True_действие; False_действие );

(2) FIELD X := "Текст";

(3) FIELD Y := "Следующий текст";

(5) @PostedCommand( [имя_команды] )

Чтобы "заставить" Domino выполнить первую @PostedCommand перед проверкой @If и следующими за ней действиями, можно создать формулу-подпрограмму (ее нужно определить в "Run once" - агенте) и запускать ее с помощью дополнительной @PostedCommand:


Программа ( в акции, кнопке, кнопке панели инструментов, гиперобъекте, Run once - агенте)

(1) @PostedCommand( [имя_команды]; параметр );

(2) @PostedCommand( [ToolsRunMacro]; "(Subprogram)" )

(Подпрограмма) (Run once - агент, запускаемый из списка агентов, с именем Subprogram)

(3) @if( Условие;  True_действие;  False_действие )

(4) FIELD X := "Текст";

(5) FIELD Y := "Следующий текст";

(6) @PostedCommand( [имя_команды] )

Вызовы функций @Command происходят при выполнении формулы в том порядке, в котором встречаются (вместе с другими операторами и @-функциями). Однако имеются исключения из этого правила. Перечисленные ниже в таблице типы @Command выполняются аналогично @PostedCommand, то есть после всех остальных действий. В R 6 добавлен целый ряд однотипных команд, которые выполняют те же действия, но немедленно, а не после других команд:

Команда, выполняющаяся после всеx остальных @-команд

Новый аналог в R 6, выполняющийся немедленно

[EditClear]

[Clear]

[EditProfile]

[EditProfileDocument]

[FileCloseWindow]

[CloseWindow]

[FileDatabaseDelete]

[DatabaseDelete]

[FileExit]

[ExitNotes]

[Folder]

[FolderDocuments]

[NavigateNext]

[NavNext]

[NavigateNextMain]

[NavNextMain]

[NavigateNextSelected]

[NavNextSelected]

[NavigateNextUnread]

[NavNextUnread]

[NavigatePrev]

[NavPrev]

[NavigatePrevMain]

[NavPrevMain]

[NavigatePrevSelected]

[NavPrevSelected]

[NavigatePrevUnread]

[NavPrevUnread]

[ReloadWindow]

[RefreshWindow]

[ToolsRunBackgroundMacros]

[RunSheduledAgents]

[ToolsRunMacro]

[RunAgent]

[ViewChange]

[SwitchView]

[ViewSwitchForm]

[SwitchForm]


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