1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление

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

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

  1. Wanderer

    Wanderer Well-Known Member
    Lotus team

    Репутация:
    0
    Регистрация:
    23 мар 2006
    Сообщения:
    396
    Симпатии:
    15
    Наверное, плохо искал, но не удалось найти здесь подходящей темы с решением...
    Нашел код по сохранению вложений:
    Код:
    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

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

    Omh Well-Known Member
    Lotus team

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

    Wanderer Well-Known Member
    Lotus team

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

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