Авто сохранение вложений из входящих писем на сетевой диск

Тема в разделе "Lotus - Программирование", создана пользователем Wanderer, 11 дек 2007.

  1. Wanderer

    Wanderer Lotus team
    Lotus team

    Регистрация:
    23 мар 2006
    Сообщения:
    368
    Симпатии:
    14
    Наверное, плохо искал, но не удалось найти здесь подходящей темы с решением...
    Нашел код по сохранению вложений:
    Код (Text):
    Sub Initialize
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim dc As NotesDocumentCollection
    Dim rtitem As Variant
    Dim attachname As String
    Dim filename As String
    Dim body As NotesRichTextItem
    Dim emphasize As NotesRichTextStyle

    Set db = session.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument
    Set rtitem = doc.GetFirstItem( "Body" )

    If ( rtitem.Type = RICHTEXT ) Then
    Forall obj In rtitem.EmbeddedObjects
    If ( obj.Type = EMBED_ATTACHMENT ) Then
    Set emphasize = session.CreateRichTextStyle
    emphasize.Bold = True
    emphasize.NotesColor = COLOR_RED
    Set body = doc.GetFirstItem("Body")
    Call rtitem.AddNewLine( 2 )
    Call body.AppendStyle(emphasize)         
    attachname = obj.source
    Call obj.ExtractFile
    ( "\\
    QDSWJDE1AMstarUnProcessed\"
    & attachname )

    Call rtitem.AddNewLine( 2 )
    Call rtitem.AppendText(( "Your file was
    downloaded to\
    \QDSWJDE1AMstarUnProcessed
    as filename: " ) &
    attachname)
    Call doc.Save( False, True )

    End If
    End Forall
    End If
    End Sub
    Для теста строчку Call obj.ExtractFile ( "\\QDSWJDE1AMstarUnProcessed\"& attachname ) заменил на Call obj.ExtractFile ( "C:\App\"& attachname )
    Обнаружил, что агент на сервере не выполняет требуемые действия. Запустил ручками агент из Дизайнера (Run) - выдало ошибку Type Mismatch. Пропустил через дебаггер - ошибка выдается на строке:
    Forall obj In rtitem.EmbeddedObjects

    1й вопрос: что не так в этом коде?
    2й вопрос: может есть у кого рабочий скрипт для агента по расписанию для авто сохранения аттачментов на сет.диске?
     
  2. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Для: Wanderer
    Сначала надо проверить есть ли вложение:
    If Not Isempty(rtitem.EmbeddedObjects) Then ...
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Для: Wanderer
    Ну и allow restricted operations, если ожидается агент по расписанию...
     
  4. Wanderer

    Wanderer Lotus team
    Lotus team

    Регистрация:
    23 мар 2006
    Сообщения:
    368
    Симпатии:
    14
    Спасибо за подсказку. Добавил проверку на наличие вложения, добавил цикл перебора всех отобранных документов (а то отрабатывало только первый док) - все работает.
     
Загрузка...

Поделиться этой страницей