- •Введение
- •Синтаксис формул
- •Лексические элементы формул
- •Переменные
- •Предопределенные поля
- •Временные переменные
- •Константы
- •Операторы выполнения операций
- •Порядок выполнения вычислений
- •Ключевые слова
- •Функции
- •Побочные эффекты
- •Ограничения применимости @-функций и команд, налагаемые списком управления выполнением (ecl)
- •Ограничения применимости @-функций и команд для Web-приложений
- •Как выполняются формулы
- •Порядок выполнения
- •Формулы, возвращающие значения
- •Формулы, выполняющие последовательность действий
- •Выполнение формул, содержащих вызовы @-команд
- •Обработка ошибок в формулах
- •Описание @-функций Domino
- •Функции - базовые конструкции языка формул
- •Функции выполнения циклов
- •Функции определения и преобразования типов данных
- •Функции для работы со строками
- •Определение вхождения подстроки в строку
- •Выделение и замена части строки
- •Функции для работы со значениями типа "дата-время"
- •Функции, работающие с компонентами значения типа "дата-время"
- •Функции для работы с численными значениями
- •Функции для работы со списками
- •Работа с переменными окружения
- •Установка значения временной переменной
- •Функции для работы с текущим документом
- •Определения свойств, характеристик и состояния текущего документа
- •Операции с полями
- •Операции с документом
- •Функции для работы с паролями
- •Функции для работы с почтой
- •Функции, определяющие почтовые настройки
- •Работа с идентификаторами документов
- •Получение информации из баз данных Domino
- •@DbColumn - выбор значений из колонки
- •@DbLookup - выбор из колонки или поля значений по ключу
- •Получение информации из баз данных, поддерживающих odbc-драйверы
- •Функции для работы с видами
- •Функции, используемые в формулах отбора документов
- •Функции, используемые в формулах колонок
- •Функции, работающие с именами пользователей
- •Функции, работающие с правами доступа
- •Функции, работающие с профильными документами
- •Функция выбора требуемого фрейма
- •Диалог с пользователем
- •Функции, определяющие тип и характеристики используемого программного обеспечения
- •Функции, используемые в Web-приложениях
- •Информационные функции
- •Функции для обработки ошибок
- •Описание @-команд Domino
- •Команды для работы с текущим и выделенными документами
- •Команды открытия объектов
- •Команды для работы с профильными документами
- •Команды обновления отображаемой информации
- •Команды для работы с видами и папками
- •Команды запуска приложений
- •Команды для работы с почтой
- •Алфавитный список @-функций
- •Алфавитный список @-команд
- •Разработка тестовых приложений
- •Простые операции с документами
- •Создание нового документа по форме
- •Редактирование текущего документа
- •Удаление документа
- •Печать документа и вида
- •Упражнение
- •Формулы полей
- •Упражнение
- •Получения доступа к данным, находящимся вне текущего документа
- •Доступ к данным вида
- •Наследование
- •Функция @DialogBox
- •Функция @PickList
- •Формулы скрытия информации
- •Формулы скрытия абзаца формы
- •Формулы скрытия акций формы и вида
- •Формулы скрытия столбцов вида и строк аутлайна
- •Упражнение
- •Формулы работы с видами
- •Формула отбора документов
- •Формулы столбцов вида
- •Наложения фильтра на вид
- •Работа с почтой
- •Работа с именами пользователей
- •Работа с уровнями доступа
- •Блокировка документов на редактирование
- •Операции с папками
- •Функции, используемые в Web-приложениях
- •Формулы по месту применения
- •Формулы панели инструментов - Toolbar button
- •Формулы агентов
- •Формула секции с управляемым доступом
- •Остальные функции
- •Литература
- •1 Введение 3
- •2 Синтаксис формул 5
- •3 Лексические элементы формул 6
- •4 Как выполняются формулы 30
- •5 Обработка ошибок в формулах 36
- •6 Описание @-функций Domino 39
- •11 Литература 412
-
Формулы, выполняющие последовательность действий
Перечисленные ниже типы формул могут не возвращать значения в результате выполнения, поскольку его обычно некуда возвращать. Такие формулы только выполняют заданную последовательность операторов. Будем называть такие @-формулы @-программами:
-
Agent formula (формулы агентов) - выполняются при запуске соответствующего агента. Формула выполняется для каждого документа, удовлетворяющего критерию отбора документов агента и внутренним условиям алгоритма агента;
-
Action formula (формула акций) - выполняются при нажатии на соответствующую кнопку-акцию в виде или форме;
-
Button formula (формула кнопки) допустима для использования в навигаторе, форме или RichText-поле документа;
-
Toolbar button formula (формулы кнопки панели инструментов) - выполняются однократно, по нажатию на соответствующую кнопку. До версии R6 эти кнопки назывались SmartIcon buttons (кнопки активных пиктограмм);
-
Action hotspot formula (формула гиперобъекта) применяется в навигаторах, формах и RichText-полях.
-
Выполнение формул, содержащих вызовы @-команд
Функция @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] |