B
BDmV
Есть агент, который из помеченных писем вытаскивает приатаченные файлы, расшифровывает их, снимает подпись и складывает в определённый каталог. (агент срабатывает при выборе пункта меню, т.е. пускается вручную)
Сам скрип работает как надо, но...
После перемещения обработанных писем в папку "Обработанные" у папки "Входящие" не меняется кол-во непрочитанных писем, и с самих писем не снимается пометка о прочтении. Метод NotesDocument.Save() тоже никакого эффекта не даёт.
Подскажите, плиз, где что в этом коде не так и куда и что прописать, чтоб статус "непрочитано" менялся на "прочтено".
Сам скрип работает как надо, но...
После перемещения обработанных писем в папку "Обработанные" у папки "Входящие" не меняется кол-во непрочитанных писем, и с самих писем не снимается пометка о прочтении. Метод NotesDocument.Save() тоже никакого эффекта не даёт.
Подскажите, плиз, где что в этом коде не так и куда и что прописать, чтоб статус "непрочитано" менялся на "прочтено".
Код:
Sub Initialize
Const inbox$ = "($Inbox)"
Const Done$ = "Обработанные"
Dim o As Notesembeddedobject
Dim InBoxCollection As NotesDocumentCollection
Dim docInboxFile As NotesDocument
Dim docInboxFilene As NotesDocument
Dim file As String
Dim filename As String
Dim tmp As String
Dim path As String
Dim dc As Variant
Dim m As Variant
Dim m1 As Variant
Dim m2 As Variant
Dim leng As Integer
Dim wks As New NotesUIworkspace
Dim ViewU As NotesUIView
Dim xx As Integer
Dim Session As New NotesSession
Dim tmpd As String*256
Set ViewU = wks.currentview
Set dc=CreateObject("DigtCrypto.PKCS7Message")
leng = GetTempPath(256, tmpd)
tmp$ = Left$(tmpd, leng)
path$ ="" ' Куда складывать файлы после обработки
path = Session.GetEnvironmentString("detachpathMF", True)
If path$="" Then
Messagebox "Не существует записи в notes.ini, поэтому файлы буду складывать в" & tmp$
path$=tmp$
End If
If ViewU Is Nothing Then
xx = Messagebox("Агент можно запустить только из папки 'Входящие'" , 16, "Внимание!!!")
Exit Sub
End If
Set InBoxCollection = ViewU.Documents.Parent.UnprocessedDocuments
Set docInboxFile = InBoxCollection .GetFirstDocument
'получаем коллекцию документов
If (docInboxFile Is Nothing) Then
Messagebox "Необходимо выбрать документыдля разбора."
Exit Sub
End If
While Not (docinboxfile Is Nothing)
Set docInboxFilene= InBoxCollection.GetNextDocument(docInboxFile)
If docInboxFile.HasEmbedded Then
Forall DocItem In docInboxFile.Items
If docitem.name = "$FILE" Then
Set o = docInboxFile.GetAttachment(docitem.values(0))
If ((Mid$(DocItem.Values(0),1,3) <> "ATT") And (Mid$(DocItem.Values(0),1,3) <>"FILESEG")) Then
file$ = path$ +"\"+ DocItem.Values(0)
filename$ = Dir$(file,0)
If Ucase(filename) = Ucase(DocItem.Values(0)) Then
Messagebox("Файл " & file & " уже существует")
Else
Call o.ExtractFile(tmp + DocItem.Values(0))
m=dc.Load(3, tmp+ DocItem.Values(0)) ' Загрузка шифрованного файла в поток
Set m1 =dc.Decrypt() ' Расшифровка файла в потоке
m2=dc.Save(0, 0, path$+"\"+ DocItem.Values(0)) 'Сохранение файла из потока со снятием подписи
End If
End If
End If
End Forall
docInboxFile.Save(False, False) ' НИ КАКОГО ЭФФЕКТА
docInboxFile.RemoveFromFolder(Inbox$)
docInboxFile.PutInFolder(Done$)
ViewU.View.Refresh
Else
Messagebox "Прикреплённые файлы отсутствуют."
End If
Set docInboxFile = docInboxFilene
Wend
If Not ViewU Is Nothing Then Call ViewU.DeselectAll()
End Sub