Кнопка "Удалить" - после удаления выбранного вложения создает документ с удаленным сложением в базе корзина.
Sub Click(Source As Button)
On Error Goto ErrH
Dim session As New NotesSession, ws As New NotesUIWorkspace, db As NotesDatabase, sview As NotesView, dc As NotesDocumentCollection
Dim uidoc As NotesUIDocument, doc As NotesDocument, templdoc As NotesDocument, DocTemp As NotesDocument
Dim picklist As Variant, mes As String
Dim rtitem As NotesRichTextItem
Dim rtitem2 As NotesRichTextItem
Dim Name_Stncl_List() As Variant ' все имена вложений
Set doc = ws.CurrentDocument.Document
Set uidoc=ws.CurrentDocument
Set rtitem = doc.GetFirstItem("attach")
Dim xxxx As Integer
i=0
If ( rtitem.Type = RICHTEXT ) Then
If Not Isempty(rtitem.EmbeddedObjects) Then
Forall obj In rtitem.EmbeddedObjects
If obj.Type = EMBED_ATTACHMENT Then ' шаг 1 имена вложений в массив
If obj.FileSize=0 Then
xxxx = Messagebox ({"Приложение: } & obj.Source & { имеет размер 0 байт.} & Chr(13) & Chr(13) & {Удалить?"}, 1 , "Удаление нулевого вложения." )
If xxxx = 1 Then
doc.history= Cstr(Now) + " "+ session.CommonUserName + " удалено приложение размером 0 байт (" + obj.Source + ") " &Chr(13) & " "&Chr(13) & doc.history(0)
Call obj.Remove
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
Call doc.save (True,False)
Call uidoc.Close
Call ws.EditDocument(True, doc) ' False - чтение
Exit Sub
End If
Else
Redim Preserve Name_Stncl_List(i)
Name_Stncl_List(i)= obj.Source ' в Name_Stncl_List вносим имена вложений
Print Name_Stncl_List(i)
i=i+1
End If
End If
End Forall
End If
End If
If i>0 Then 'есть хоть одно вложение в поле атач
Set DocTemp = doc.ParentDatabase.CreateDocument
DocTemp.ReplaceItemValue "Name_ListAttach", Name_Stncl_List
flag = ws.DialogBox("ChooseDlg",True,True,False,False,False,False,"Выберите документы для удаленияl",doctemp, True)
If flag=False Then Exit Sub
End If
q$=""
k = Ubound(doctemp.ListAttach) ' поле ListAttach с именами вложений на форме ChooseDlg
If k = 0 And doctemp.ListAttach(0) = "" Then Messagebox "Не выбраны приложения", 64, "Внимание"
For jj = 0 To k
q$=doctemp.ListAttach(jj)
Print q$
Forall obj In rtitem.EmbeddedObjects
If obj.Source =q$ Then
Print "удалить " obj.Source
' Копирование в КОРЗИНУ
Set db = session.CurrentDatabase
server$ = db.Server
databaseFileName$ = "promdoc\recycled.nsf"
Print server$ "\" databaseFileName$
Set db = session.GetDatabase(server$, databaseFileName$)
If Not db.Isopen Then
Messagebox "Нет доступа к Базе Корзина!", 16, "Ошибка!!!"
Exit Sub
End If
datapatch$ = "C:\XML\"
If Dir$ (datapatch$ ,16 )="" Then
Mkdir datapatch$
End If
Call obj.ExtractFile( datapatch$ & obj.Source )
Dim docR As NotesDocument
Set docR = db.GetDocumentByUNID(doc.id(0))
Print "doc.id " doc.id(0)
Dim flagr As Boolean
flagr=False
If docR Is Nothing Then
flagr=True
Else
Print "docR.UniversalID " docR.UniversalID
If docR.Size>0 Then
Print "Док уже есть.Крепим удаленное вложение"
Set rtitem2 = docR.GetFirstItem("attach" )
Else
Print "НУЛЕВОЙ ГЛЮЧНЫЙ ДОК!"
If docR.IsDeleted Then Print "DELETED"
flagr=True
End If
End If
If flagr=True Then
Print "Создать док"
Set docR = New NotesDocument( db ) ' ' ---------- новый Док в базе Корзина
Set rtitem2 = New NotesRichTextItem (docR,"attach")
docR.form = doc.form
docR.header = doc.header
docR.adresed = doc.adresed
docR.datereg = doc.datereg
docR.isp = doc.isp
docR.regnom_1 = doc.regnom_1
docR.regnom = doc.regnom
docR.doctype = doc.doctype
docR.docnomen = doc.docnomen
docR.date_kor = doc.date_kor
docR.regnom_kor = doc.regnom_kor
docR.history = doc.history
docR.id = doc.id
docR.fullregnom = doc.fullregnom
docR.isreg = doc.isreg
docR.archive = doc.archive
docR.UniversalID=doc.UniversalID
End If
Call rtitem2.EmbedObject ( EMBED_ATTACHMENT, "", datapatch$ & obj.Source)
Call docR.Save(1,0)
Print "СОхранили."
doc.history= Cstr(Now) + " "+ session.CommonUserName + " удалено приложение (" + obj.Source + ") " &Chr(13) & " "&Chr(13) & doc.history(0)
Call obj.Remove
End If
End Forall
Next
' Call rtitem.Update
doc.ReplaceItemValue({SaveOptions},{0}).SaveToDisk=False
Call doc.save (True,False)
Call uidoc.Close
Call ws.EditDocument(True, doc) ' False - чтение
Exit Sub
ErrH:
If Err = 4091 Then
Print "Документа нет в Корзине!"
Resume Next
End If
Print "Ошибка " & Error(Err) & " в строке " & Erl
Exit Sub
End Sub