Экспорт выделенных документов в Xml

  • Автор темы DFO
  • Дата начала
H

hosm

можно просто тихо и молча добавить родителя в коллекцию для экспорта или убрать дочерний из коллекции...

Добавлено: ну, или если винда, можно поизвращаться с винапишными нажатиями клавиш для выделения дока)
Где-то у нас вроде пробегала такая темка на форуме, а?
 
D

DFO

Сделал так:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
Код:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim strm As NotesStream
Dim doc As NotesDocument
Dim col As Notesdocumentcollection
Dim coll As NotesDocumentCollection
Dim parentDoc As NotesDocument
Dim i As Integer
Dim ex As NotesDXLExporter
i = 0
Set db = session.CurrentDatabase
Set col=db.UnprocessedDocuments
Set doc = col.GetFirstDocument
While i < db.UnprocessedDocuments.Count
If doc.IsResponse = True Then
While doc.IsResponse = True
Set parentDoc = doc.ParentDatabase.GetDocumentByUNID(doc.ParentDocumentUNID)
coll.AddDocument(doc)
If Not col.getDocument( parentDoc ) Is Nothing Then
coll.AddDocument(parentDoc)
End If
Set doc=col.GetNextDocument(doc)
i=i+1
Wend
Set strm=session.CreateStream
file$="d:\Temp\Document" & i+1 & ".xml"
Call strm.Open(file$)
Call strm.Truncate
Set ex = session.CreateDXLExporter(coll ,strm)
i = i + 1
Call ex.Process
Call strm.Close
End If
Set strm=session.CreateStream
file$="d:\Temp\Document" & i+1 & ".xml"
Call strm.Open(file$)
Call strm.Truncate
Set ex = session.CreateDXLExporter(doc ,strm)
i = i + 1
Call ex.Process
Call strm.Close
Set doc=col.GetNextDocument(doc)
Wend
Messagebox"Созданно " & i & " xml файла"
End Sub
Не работает, ругается на coll.AddDocument(doc) Type mismatch.
Извинете я нубас в лотусе( но задание сделать очень нужно
 
D

DFO

Исправил collection на col.

Мне нужно чтобы в коллекцию coll добавлялись следующие докумениы:
Если документ дочерний то добавляется и родительские.
Потом вся колекция разом экспортируется в xml
 
H

hosm

Кстати, обычно не ленюсь писать Call col.AddDocument(doc)
вообще-то есть разница в передаче параметров с Call и без него. Детали хелп "Call statement"
 
D

DFO

Вот что получилось:
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
Код:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim strm As NotesStream
Dim doc As NotesDocument
Dim col As Notesdocumentcollection
Dim coll As NotesDocumentCollection
Dim view As NotesView
Dim parentDoc As NotesDocument
Dim i As Integer
Dim ex As NotesDXLExporter
i = 0
Set db = session.CurrentDatabase
Set col=db.UnprocessedDocuments
'	Set view = db.GetView("") <-Тут хз от фанаря написал
Set doc = col.GetFirstDocument
Set coll = view.GetAllDocumentsByKey("Nothing")
While i < db.UnprocessedDocuments.Count
If doc.IsResponse = True Then
While doc.IsResponse = True
Set parentDoc = doc.ParentDatabase.GetDocumentByUNID(doc.ParentDocumentUNID)
'				Set coll = db.UnprocessedDocuments.AddDocument(doc)
Call coll.AddDocument(doc)
If Not col.getDocument( parentDoc ) Is Nothing Then
Call	coll.AddDocument(parentDoc)
End If
Set doc=col.GetNextDocument(doc)
i=i+1
Wend
Set strm=session.CreateStream
file$="d:\Temp\Document" & i+1 & ".xml"
Call strm.Open(file$)
Call strm.Truncate
Set ex = session.CreateDXLExporter(coll ,strm)
i = i + 1
Call ex.Process
Call strm.Close
End If
Set strm=session.CreateStream
file$="d:\Temp\Document" & i+1 & ".xml"
Call strm.Open(file$)
Call strm.Truncate
Set ex = session.CreateDXLExporter(doc ,strm)
i = i + 1
Call ex.Process
Call strm.Close
Set doc=col.GetNextDocument(doc)
Wend
Messagebox"Созданно " & i & " xml файла"
End Sub
не знаю теперь как инициализировать view
 
H

hosm

да возьмите Set coll = db.Search( "" , Nothing , 0 ) и не мучьтесь с вьюхами...
 
D

DFO

Спасибо всем, вроде получилось ;)
Щас буду пытатся доделывать, там вроде понт остался, условия подправить:

А как сделать такой if
Если у doc есть дочерний документ и он отмечен галочкой(т.е. UnprocessedDocuments)
То выполнить блаблабла
 
D

DFO

Я так понял это первый дочерний документ:
doc.Responses.GetFirstDocument
А как условие сделать непонимаю =(
 
N

nvyush

Как-то так
if not UnprocessedDocuments.GetDocument(doc.Responses.GetFirstDocument) is nothing then бла бла бла
 
H

hosm

указали вот тут:
Проверить наличие родителя в коллекции: not collection.getDocument( parentDoc ) is nothing
применимо не только для родительского документа.
Т.е. шаблон проверки условия наличия документа в коллекции готов, только бери нужный документ вместо parentDoc и нужную коллекцию вместо collection
 
Мы в соцсетях:

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