Читайте также: |
|
Set Doc = New NotesDocument (db)
Этот оператор создает объект класса NotesDocument (новый документ в БД), и ссылкой на него будет переменная doc.
Новые объекты Dominо можно создавать и за один этап, используя операторы формата:
Dim Doc as New NotesDocument (NotesDatabase)
Подобный оператор создает объектную ссылку типа NotesDocument, но не создает сам документ. В этом случае мы работаем с объектом документа, в котором можно создавать поля и помещать в них некоторые значения. Потом можно сохранить этот объект, при этом будет создан реальный документ.
Рассмотрим клиентские классы. Объектами, к которым производится обращение, будут: рабочее пространство, текущая БД и текущий документ. Рассмотрим соответствующие им классы.
Когда с объектами, относящимся к клиентским классам, пользователь работает с помощью интерфейса пользователя, то разработчик может обращаться к таким объектам и вносить изменения, которые пользователь может увидеть сразу же.
Класс NotesUIWorkspace – текущее рабочее пространство, отображаемое в текущем окне. Это может быть, или рабочее пространство (рабочий стол Notes), или открытый в настоящее время документ.
В рабочем пространстве можно открыть и представления, но лучше это сделать с помощью класса NotesUIView. Если в представлении присутствует кнопка действия, при помощи которой добавляются, удаляются, или изменяются документы, имеющиеся в представлении, то можно работать с сервером. Для того, чтобы сделанные изменения были видны пользователю можно использовать метод ViewRefresh класса NotesUIWorkspace. Если не применять этот метод, то пользователь не будет знать, что представление изменилось.
Класс NotesUIDatabase имеет 2 метода:
Объект этого класса служит, прежде всего, для размещения в нем сценариев, присоединенных к событиям БД (например, события PostOpen, QueryClose и др.). Свойство Documents класса NotesUIDatabase предоставляет доступ ко всем документам базы данных.
Документ, открытый в данный момент и отображаемый в рабочем пространстве, является объектом класса NotesUIDocument. Над ним можно выполнять различные действия: перемещать курсор, вносить текстовую информацию в поле, извлекать содержимое поля, обновлять документ, отправлять его по почте. С помощью свойства Document этого класса, можно получить доступ к документу сервера. Метод Refresh, существующий только в классе NotesUIDocument, обновляет текущий документ, вновь выполняя все формулы входной трансляции, входной проверки и формулы вычисляемых полей. Метод Reload обновляет документ клиента, внося в него изменения, которые были выполнены в документе сервера. Метод Reload необходим только в том случае, если для свойства AvtoReload объекта NotesUIDocument установлено false. По умолчанию AvtoReload = True. Если выполняется множество изменений в документе сервера, то устанавливаем AvtoReload = False и после того, как все изменения в документе будут выполнены, вызываем метод Reload.
В агентах, запускаемых на сервере нельзя использовать UI-классы и подключать библиотеки, использующие эти классы.
59. Класс NotesDocument.
Свойства этого класса позволяют узнать любую информацию о документе. Например, дату создания, значения, отображаемые в столбцах представления в строке документа (если документ был открыт из представления), встроенные в него объекты, размер документа и т.д. Методы этого класса позволяют выполнять различные действия над любыми элементами документа, делать данный документ ответным, помещать в папку или удалять его из папки, отправлять его по почте или сохранять.
Если создается новый объект NotesDocument и в него не добавляются никакие элементы, то документ не будет сохранен, если воспользоваться методом Save.
В языке Lotus Script поля называются элементами. Поля создаются в форме для ввода данных. Затем посредством интерфейса пользователя с помощью формы создается документ. Программа-клиент вводит информацию в поля формы, и эта информация сохраняется в документе. Вместе с данными в документе запоминается информация о самом поле. Эти данные и информация относительно поля образуют элемент. С помощью Lotus Script данные могут запоминаться в элементах документа, и эти элементы будут отображаться на экране только в том случае, если в форме, используемой для отображения документа, будет соответствующее поле.
При создании документа с использованием языка Lotus Script и объекта NotesDocument, в поле Form заносится информация о том, какая форма будет использоваться при открытии документа пользователем. Если затем этот документ сохраняется, то не будет выполнена ни одна формула поля в этой форме, т.к. документ создавался на сервере, а форма не была открыта, то связь между данными документа и формулой не будет установлена. Поэтому строка документов в представлении, возможно, не будет отображаться нужным образом. После открытия документа с помощью интерфейса пользователя и его сохранения, формулы полей будут работать. При создании документов на сервере необходимо программно установить значения всех вычисляемых полей или использовать метод ComputeWithForm, чтобы вызвать выполнение формул.
В языке Lotus Script при создании документа всегда необходимо устанавливать значения поля Form. Информация в него заносится так: doc.form или uidoc.setdocfield
Метод Send класса NotesDocument используется для отправления документов по электронной почте. Этому методу необходимо передать, по крайней мере, одно значение Sendto, с помощью аргумента attachForm метода Save можно отправить форму вместе с документом. Метод Save имеет 3 аргумента: Force, CreateResponse, MarkRead. Аргумент Force имеет тип boolean. Если Force = True и кто-нибудь сохранил документ в то время, когда его модифицировали, то Notes удаляет сохраненный документ, записывая на его место новый вариант документа. Если Force = False, то предпринимаемые действия записываются вторым аргументом CreateResponse (тип Boolean). Если Force = False, а CreateResponse = True, то текущий документ становится ответом на документ, отредактированный и сохраненный предыдущим пользователем. Если Force = False, и CreatResponse = False, то сохранение нового варианта документа отменяется. Аргумент MarkRead определяет будет ли сохраненный документ отмечен для чтения текущим пользователем (документ сейчас читается таким-то пользователем).
60. События в языке Lotus Script. Сценарий баз данных
В Lotus Notes имеются средства для создания сценариев обработки событий на уровне баз данных. В панели Design в разделе Other имеется объект Database Script, который содержит список событий, происходящих на уровне базы. Программы для их вызова пишутся только на языке Lotus Script. Список событий, для которых можно создавать сценарии при работе с объектом Database Script приведен на стр. 552
Рассмотрим последовательность событий БД, в результате которых выполняется программа для каждого события БД. Открытие БД вызовет событие Initialize (т.к. происходит инициализация БД) и вслед за ним – событие PostOpen. Теперь мы находимся на уровне представления. Создание, открытие и закрытие документов не вызывает событий БД. Выберем в представлении один из документов и нажмем клавишу Delete, в результате произойдет событие QueryDocumentDelete. Оно происходит перед тем, как в видимой области отображается символ корзины. При повторном нажатии Delete происходит событие QueryDocumentUnDelete (выполняется до того, как изображение корзины удаляется из видимой области). Еще одно нажатие Delete и последующее нажатие клавиши F9 приводит к появлению на экране диалогового окна с вопросом об окончательном удалении из базы документа. Если ответить Yes, то документ удаляется и сразу же генерируется событие PostDocumentDelete. После закрытия БД происходит событие QueryClose, а вслед за ним – событие Terminate.
Установка значения false для аргумента Continue в любом событии Query (напр. QueryClose) прекращает выполнение этой программы.
Пример. Запретим пользователю удалять документ (можно конкретный документ конкретному пользователю).
Sub Querydocumentdelete (Source As NotesUIDatabase, Сontinue As Variant)
Continue = false
End sub
События PostOpen базы данных может сканировать базу данных в поисках документов, принадлежащих текущему пользователю, а затем выводить на экран диалоговое окно, информирующее пользователя о том, что у него имеются новые документы, которые необходимо просмотреть или что ряд документов ожидает его одобрения.
61. Порядок обработки событий.
При создании сценариев событий необходимо четко знать, в каком порядке происходят события.
Когда база данных открывается, то на экране по умолчанию отображается представление. Если не задано свойство запуска базы данных при открытии Navigator, наборов фреймов документа About, или запуске объекта, то на экране отображается последнее представление, к которому обращался данный пользователь. Порядок обработки событий при открытии базы данных приведён в таблице 23.4 на стр.557. Первыми идут события представления, а события базы данных выполняются за ними.
Если БД открывается набором фреймов, который содержит представления, то указанный порядок сохраняется. Если БД открывается набором фреймов, который содержит представление и страницу или документ, то порядок событий зависит от того, в каком фрейме объект находится. Фреймы обрабатываются в направлении сверху вниз и слева направо. Если существует 2 фрейма и представления отображается в 1-м фрейме, то события представления будут генерироваться первыми. Если же в первом фрейме находится страница, то первыми генерируются события формы.
При закрытии БД из представления сначала обрабатываются события представления, а затем события БД. Для набора фреймов действует выше приведённые правила.
При создании или редактировании документов происходят события форм, полей и других объектов, расположенных на форме. При выборе в представлении существующего документа для редактирования происходит Событие QueryOpenDocument (если документ новый, то оно не происходит). Когда документ открыт, и пользователь решает переключиться из режима чтения в режим редактирования или наоборот, то происходит 2 события: сначала QueryModeChange, затем PostModeChange. При закрытии документа происходит 2 события: сначала QuerySave, затем PostSave. Порядок выполнения событий при создании или редактировании документа приведён в таблице 23.6 на стр.557, а порядок при закрытии документа – в таблице 23.7 на стр.557. При удалении документа в представлении происходит сначала событие QueryDocumentDelete, затем PostDocumentDelete.
62. Библиотеки сценариев.
Если в конце этапа разработки объёмного приложения в среде Lotus вдруг потребуется изменить имя переменной, объектной ссылки или подпрограммы, используемой во многих местах то очень сложно вспомнить все случаи, где она используется. Поэтому придётся просматривать события для всех объектов, что весьма долго и неудобно. Облегчить эту задачу могут библиотеки сценариев.
Библиотека сценариев – это специальный объект, являющийся частью любой БД. У него есть события: (Options), (Declaration), Initialize, Terminate. В библиотеку сценариев можно поместить любую переменную, константу, объект, функцию или подпрограмму. Используя оператор Use в Options соответствующего объекта, можно создать ссылку на любой объект, объявленный в библиотеке сценариев, т.е. сделать его доступным. В панели дизайна библиотеки сценариев находятся Shared Code-->Script Libraries.
При разработке приложения, связанного с почтовой системой можно применять библиотеки сценариев из шаблонов Mail R7.
63. Обработка ошибок.
Ошибки бывают 2-х типов: ошибки компиляции и ошибки выполнения. Сообщение об ошибке компиляции отображается в нижней части экрана в окне с раскрывающимся списком Errors, пока не будут исправлены все ошибки компиляции, программа не запустится.
Ошибки, которые обнаруживаются только во время выполнения программы, называются ошибками выполнения. Они могут быть различного типа. Рассмотрим функции и операторы языка Lotus Script, облегчающие обработку ошибок:
Когда происходит ошибка, текущая процедура проверяется на наличие оператора On Error. Если он найден, то он выполняется. Если нет, то проверяется процедура, вызвавшая данную процедуру (если она есть). Если находится оператор On Error, то он выполняется, иначе проверяется следующая вызывающая процедура и т.д. Если подпрограмма обработки данной ошибки не будет найдена, то на экран выводится сообщение об ошибке и выполнение программы прекращается.
Операторы Err и Error используются для установки или генерации каких-либо ошибок и часто применяются при тестировании подпрограмм обработки ошибок (особенно собственных).
Оператор On Error может содержать номер ошибки. Когда происходит ошибка с этим номером, то управление передается подпрограмме обработки ошибок, которая задана в операторе On Error. Но оператор On Error может и не содержать номера ошибки, тогда управление передается указанной в операторе подпрограмме обработки ошибок при возникновении любой ошибки не указанной ни в одном другом операторе On Error. В программе может быть любое количество операторов On Error. Все они обрабатывают ошибки определенных типов, за исключением одного оператора, который обрабатывает все остальные. Если для одного номера ошибки задаются 2 оператора On Error, то выполняться будет последний из них.
Существует 5 конструкции операторов, которые могут следовать за оператором On Error:
а) goto label;
б) resume next;
в) goto 0;
г) resume 0;
д) resume label.
Конструкция goto label при возникновении ошибки передает управление оператору, следующему за меткой label. Конструкция resume next передает управление оператору, следующему за оператором, вызвавшим ошибку (продолжить, не обращая внимания на ошибку). Конструкция Goto 0 указывает, что в текущей процедуре ошибка не должна обрабатываться.
Оператор resume 0 указывает на то, что оператор, вызвавший ошибку, должен быть выполнен снова. Оператор resume label передает управление оператору, следующему за меткой label (resume label используется только в подпрограммах обработки ошибок). Оператор resume также восстанавливает значение функций Err, Erl, Error. Когда они сброшены, то это означает, что либо ошибок нет, либо все они обработаны.
Используя функцию Erl можно вывести на экран пользователю номер строки оператора, вызвавшего ошибку.
При обработке ошибок часто применяется оператор Exit sub, который служит в качестве точки выхода из процедуры, если она завершается нормально, т.е. ошибки отсутствуют.
Ошибки можно задавать не только номером, но и с помощью символических имен констант.
Пример. On Error ErrFileNotFound Goto m1
Эти константы хранятся в файлах LSERR.LSS, LSXUIERR.LSS, LSXBEERR.LSS.
64. Взаимодействие с пользователем: функции MessageBox, InputBox и метод Dialogbox.
Функция MessageBox выводит на экран информацию для пользователя. Функция InputBox обеспечивает ввод пользователем информации в программу. Метод DialogBox отображает на экране форму или документ в диалоговом окне.
При использовании этих функций и метода необходимо подключить к программе файл констант LsConst.lss, тогда можно будет использовать имена констант в качестве аргументов.
Функцию MessageBox можно записать в виде MsgBox.
Дата добавления: 2015-09-10; просмотров: 98 | Поможем написать вашу работу | Нарушение авторских прав |