Тема: Выгрузка всех вложений из XML документа в rich поле.
Sub Click(Source As Button)
' прикрепляет в карточку в приложение все вложения из XML дока.
On Error Goto ErrH
Dim session As New NotesSession
Dim db As NotesDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim rtitemA As NotesRichTextItem
Dim nam As String, namout As String ' откуда куда
Dim strm As NotesStream
Dim outputStream As NotesStream
Dim domParser As NotesDOMParser
Dim docNode As NotesDOMNode
flagXMLsize = "0"
Set db = session.CurrentDatabase
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
dpatch$ = "C:\XML\"
If doc.HasEmbedded Then
Set rtitemA = doc.GetFirstItem("attach" )
If Isempty( rtitemA.EmbeddedObjects) Then
Messagebox "В документе нет xml"
Exit Sub
Else
Forall obj In rtitemA.EmbeddedObjects
If ( obj.Type = EMBED_ATTACHMENT ) Then
If Lcase(Strrightback(obj.Source , ".")) = "xml" Then
'Messagebox "все вложения допустимые"
Call obj.ExtractFile( dpatch$ & obj.Source ) ' тоже фиг обработаешь ((
oname$ = dpatch$ & obj.Source
Print oname$
Set strm = session.CreateStream()
Set outputStream =session.CreateStream()
Call strm.Open(oname$, "UTF-8" )
xmlsize$= strm.Bytes
Print xmlsize$ & " размер вложения"
If xmlsize$ < 4000000 Then
Messagebox "Вложения имеют размер менее 4 МБ. Выгрузка вложений не нужна."
Exit Sub
End If
Set domParser=session.CreateDOMParser(strm, outputStream)
domParser.Process
Set docNode = domParser.Document
Print "Старт XMLTree"
Call XMLTree(docNode,doc)
Print "Конец XMLTree"
strm.Close
Kill oname$
Print "flagXMLsize " & flagXMLsize
If flagXMLsize = "0" Then
Msgbox "Нет вложений больше 4мб!"
Exit Sub
End If
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
Call uidoc.Close
Call ws.EditDocument(True, doc) ' False - чтение
If Fname = "" Then
Msgbox "Нет приложений в XML"
Else
Msgbox "Вложение прикреплено"
End If
End If
End If
End Forall
End If
End If
Exit Sub
ErrH:
Print "Ошибка получения вложения XML " & Error(Err) & " в строке " & Erl
End Sub