Функция @PickList() играет в языке формул важную роль, так как она не имеет ограничений на количество запоминаемых данных (в отличие от остальных функций @Db) и выполняется очень быстро. В основном она загружает представление в диалоговое окно с кнопками ОК и Cancel. Ниже приводится программный код, создающий данный список выбора:
gPickList ([Custom; ""; "By Part"; "Select a Chapter";
"Please select the Chapter to review"; 2)
В функции @PickList() можно применятьидентификатор реплики базы данных (Replica ID). Функция @PickList() может также осуществлять просмотр каталога Domino. Вот синтаксис данной функции для выполнения подобного просмотра:
gPickList ([Name] : [Single])
Если задать параметр Single, функция отображает список, из которого можно выбрать одно имя. В противном случае отображается диалоговое окно, состоящее из двух фреймов с передвижной границей между ними. В этом окне пользователь может выбрать из каталога Domino более одного элемента.
ПРЕДОСТЕРЕЖЕНИЕ
Все функции @Functions, обсуждавшиеся в настоящем разделе, доступны только в программах-клиентах Notes; в программах-клиентах Web они недоступны.
Перехват ошибок в формулах
В Domino Designer большинство синтаксических ошибок перехватывается еще до того, как объект дизайна будет сохранен. Однако имеется только одна функция @Function, осуществляющая проверки на наличие ошибок. Это функция @IsError(). Ее можно использовать для проверки возвращаемого значения на наличие ошибки и заменить ошибочное значение, например, значением null (пара двойных кавычек). Если не сделать замену, то пользователь вместо этого значения увидит сообщение об ошибке. Например, если в формуле для столбца представления производится деление числа на константу, то при отсутствии этого числа в столбце представления отображается ошибка. В приведенном примере формула дает ошибку для документов, не имеющих присоединенных файлов :
@Text (@Integer (@AttachmentLengths / 1024)) + " К"
Эту формулу для столбца можно переписать, добавляя в нее функцию @IsError(),которая перехватывает ошибки деления и вместо ошибочного результата отображает пустую строку. Измененная таким образом формула имеет следующий вид:
jcSize := @Integer (@AttachmentLengths / 1024;
@If (@IsError (jcSize) ; ""; @Text (jcSize) + " K")
Отладка сложных формул
Отладка сложных формул может быть довольно трудным делом. Во-первых (и это самое главное), формулы нельзя выполнять в пошаговом режиме в отличие от программ на языке LotusScript и других языках программирования. Следовательно, отсутствуют точки останова, в которых можно посмотреть значение временной переменной или поля. Нельзя просматривать ход выполнения программы, ее логику. Такое положение дел может выводить программистов из себя. Но, к счастью, имеется два способа обойти эту проблему.
Первый заключается в том, что в документе создаются поля для хранения значений временных переменных или текстовых сообщений, указывающих на то, что произошло некоторое событие. Он имеет тот недостаток, что в документе без особой необходимости увеличивается число полей. Конечно, после того, как формула будет закончена, можно создать программу-агент для удаления дополнительных полей с помощью функции @DeIeteField. Этот подход оправдан тогда, когда программа-агент обрабатывает много документов и необходимо видеть, что происходит с каждым документом.
Второй способ состоит в том, что в формулу через соответствующие интервалы помещаются операторы @Prompt ([OK]; ...), которые отображают значения вызывающих сомнение переменных или операторы, указывающие на то, что выполнение формулы достигло определенной точки. Этот подход применим для формул, присоединенных к кнопкам действий и функционирующих на уровне документа.
В текущей версии R5 имеется задокументированный отладчик формул. Его можно запустить, удерживая в нажатом состоянии клавиши Ctrl и Shift, во время выбора в меню File (Файл) команды Tools | Debug LotusScript (Сервис | Отладка LotusScript). Вполне определенно можно сказать, что в бета-версии R5 этот метод работает; известно также, что он вызывает аварийное завершение программы-клиента Notes.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.