Помогите новичку

  • Автор темы Scar
  • Дата начала
S

Scar

Здравствуйте. Я впервые вижу Lotus и мне очень нужно сделать следующее:

Разработать механизм импорта/экспорта документов для созданной базы по следующим требо-ваниям:
a. экспорт документов по выбору пользователя (не всех сразу);
b. сохранение иерархических связей при экспорте (если для экспорта выбран документ, ко-торый не является документом верхнего уровня, то необходимо предложить пользовате-лю включить в экспорт всю иерархическую цепочку до верхнего уровня, в противном слу-чае экспорт не производить);
c. при импорте создавать новые документы, а не изменять старые.
d. формат для экспорта данных: xml
e. одним из тестов для проверки работоспособности механизма будет следующая последо-вательность действий: экспорт всех документов – удаление всех документов из базы – импорт экспортированных данных, в результате в базе должна получиться та же структу-ра данных, которая была до проведения испытания.

База создана не на сервере, а именно в Notes, подскажите пожалуйста, как это сделать? Или хотя бы где об этом прочитать (Желательно на русском)?
Заранее благодарен!
 
A

Akupaka

Ниже указаны методы, описание которых можно прочесть в справке Lotus Domino Designer Help.
a. экспорт документов по выбору пользователя (не всех сразу);
Выбор документов в виде, агент по выбранным документам, выбранные документы можно получить с помощью свойства: NotesDatabase.UnprocessedDocuments

b. сохранение иерархических связей при экспорте (если для экспорта выбран документ, ко-торый не является документом верхнего уровня, то необходимо предложить пользовате-лю включить в экспорт всю иерархическую цепочку до верхнего уровня, в противном слу-чае экспорт не производить);
Коллекция дочерних документов: NotesDocument.Responses
Родительский документ можно получить несколькими способами, самый быстрый: получить унид родителя из поля $REF дочернего документа, потом достать из базы данных документ по униду: Set NotesDocument = NotesDatabase.GetDocumentByUNID( NotesDocument.GetItemValue("$REF")(0) )
Вместо $REF можно использовать notesDocument.ParentDocumentUNID, т.е. Set NotesDocument = NotesDatabase.GetDocumentByUNID( notesDocument.ParentDocumentUNID )
Для запросов простых ответов пользователя функция Messagebox(), NotesUIWorkspace.Prompt()

c. при импорте создавать новые документы, а не изменять старые
Создать новый документ: Set NotesDocument = NotesDatabase.CreateDocument, NotesDocument.ReplaceItemValue(), NotesDocument.Save()

формат для экспорта данных: xml
С XML придется разобраться перед использованием.
Работать в Notes с XML: NotesXMLProcessor и наследованные от него классы: NotesDOMParser, NotesDXLExporter, NotesDXLImporter, NotesSAXParser, NotesXSLTransformer

одним из тестов для проверки работоспособности механизма будет следующая последо-вательность действий: экспорт всех документов – удаление всех документов из базы – импорт экспортированных данных, в результате в базе должна получиться та же структу-ра данных, которая была до проведения испытания.
Нужен ли комментарий? Для этого можно создать вторую такую же базу пустую и заимпортить, будет и источник, и результат для наглядного сравнения.
 
N

nvyush

Коллекция дочерних документов: NotesDocument.Responses
Родительский документ можно получить несколькими способами, самый быстрый: получить унид родителя из поля $REF дочернего документа, потом достать из базы данных документ по униду: Set NotesDocument = NotesDatabase.GetDocumentByUNID( NotesDocument.GetItemValue("$REF")(0) )
При этом не забываем, что в свойствах базы должна быть сброшена галка "Don't support specialized response hierarchy" (последняя закладка), иначе Responses вернёт пустую коллекцию. Вместо NotesDocument.GetItemValue("$REF")(0) проще использовать NotesDocument.ParentDocumentUNID.
 
S

Scar

А теперь самый глупый вопрос :) Куда все это писать? Это, как я понял, должен быть обработчик какого-то события? Только не пойму какого и как его потом вызвать? :please: :ya_lamo:
Повторюсь, я впервые установил себе Lotus, а в той литературе, что у меня есть такого не нашел... Читал хелп, но и там нашел только описание функций...
 
H

hosm

В агент (например, из меню, работающий на всех выбранных документах) либо действие в каком-то представлении.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!