Вопросик по агенту

Тема в разделе "Lotus - Программирование", создана пользователем DNT, 28 мар 2006.

  1. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    Дайте совет плиз...

    Есть агент, первая его функция - изменить поля в коллекции документов:

    ...
    'выбираем все доки в отложенных
    search = "(Form='MainForm') & (Faza = '3') & (@Date(MDateNext) = @Date(@Now))"
    Set col = db.Search(search, Nothing, 0)
    For i =1 To col.Count
    Set doc = col.GetNthDocument(i)
    doc.faza="1"
    doc.status = "0"
    doc.exec = "0"
    doc.MDateNext = ""
    Call doc.save(False,False)
    Next
    ...

    Вторая часть - отправить сообщение пользователю:
    ...
    'Отправляем уведомление инициатору проекта
    Set memo=New NotesDocument (db)
    memo.Form="Memo"
    ...
    Call memo.Send(False)
    ...

    Так вот, этот агент у меня есть в базе в двух вариантах запуска - из меню и по расписанию. Из меню всё замечатьно - поля меняет письма рассылает. По расписанию не работает - запускается (вижу в логе), поля не меняет, сообщение присылает. Что может быть?????
     
  2. Гость

    Может быть ты использовал один из UI-классов?
    Они в агентах по рассписанию не работают.
     
  3. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    <!--QuoteBegin-Юлия+28:03:2006, 13:48 -->
    <span class="vbquote">(Юлия @ 28:03:2006, 13:48 )</span><!--QuoteEBegin-->Может быть ты использовал один из UI-классов?
    Они в агентах по рассписанию не работают.
    [snapback]32640" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Нет UI классы не использовал, доки получал поиском и перебором по коллекции документов:

    ...
    search = "(Form='MainForm') & (Faza = '3') & (@Date(MDateNext) = @Date(@Now))"
    Set col = db.Search(search, Nothing, 0)
    For i =1 To col.Count
    Set doc = col.GetNthDocument(i)
    ...

    А что есть ограничения на лотус скрипт при написании агентов???? Если да то где о них написано???? В хелпе вроде нет ничего...
     
  4. Гость

    А db как определял?

    В UI-классах написано.
    Из хелпа:
     
  5. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    <!--QuoteBegin-Юлия+28:03:2006, 14:22 -->
    <span class="vbquote">(Юлия @ 28:03:2006, 14:22 )</span><!--QuoteEBegin-->А db как определял?

    В UI-классах написано.
    Из хелпа:
    [snapback]32645" rel="nofollow" target="_blank[/snapback]​
    [/quote]


    Dim Session As New NotesSession
    Dim DB As NotesDatabase
    Dim View As NotesView
    Dim Doc As NotesDocument
    Dim SetupDoc As notesdocument
    Dim Num As Variant
    Dim DC As NotesDocumentCollection

    Set DB = Session.CurrentDatabase
     
  6. Гость

    Попробуй Save(True, True)
     
  7. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    <!--QuoteBegin-Юлия+28:03:2006, 14:49 -->
    <span class="vbquote">(Юлия @ 28:03:2006, 14:49 )</span><!--QuoteEBegin-->Попробуй Save(True, True)
    [snapback]32649" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Попробую конечно. Спасибо.
     
  8. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Гм.... по теме я ничего сказать не могу, но что за странный код?... Насчет мотода db.Search я впервые узнал.... По-моему, если можно, то лучше брать документы из представления.
    Такой конструкцией опять же никогда не пользовался
    Опять первый раз вижу).
     
  9. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    2 fedotxxl

    Что сказать.... Если вручную запускаю - все ОК.
     
  10. Domino6

    Domino6 Гость

    Для: fedotxxl учи матчасть


    Для: DNT попробуй убрать @now

    Посмотри что в логе агента (Стань на агента в дизайнере в меню Агент\Журнал)
     
  11. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    <!--QuoteBegin-Domino6+29:03:2006, 16:05 -->
    <span class="vbquote">(Domino6 @ 29:03:2006, 16:05 )</span><!--QuoteEBegin-->Для: fedotxxl учи матчасть
    Для: DNT попробуй убрать @now

    Посмотри что в логе агента (Стань на агента в дизайнере в меню Агент\Журнал)
    [snapback]32738" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Вобщем вот что удалось выяснить:

    если я становлюсь на агента в дизайнере в меню Агент\Журнал - там запись что он стартанул, потом запустился скрипт, потом агент завершил работу. Информации не много. Я пошел дальше - посмотрел в базе log.nsf :

    29.03.2006 01:00:40 AMgr: Agent ('DefCheck' in 'Имя базы.nsf') error message: Error creating product object


    Чё бы это могло значить?
     
  12. Domino6

    Domino6 Гость

    Для: DNT
    Дай полный код
     
  13. DNT

    DNT Постоялец форума
    Lotus team

    Регистрация:
    12 окт 2005
    Сообщения:
    592
    Симпатии:
    7
    <!--QuoteBegin-Domino6+30:03:2006, 09:00 -->
    <span class="vbquote">(Domino6 @ 30:03:2006, 09:00 )</span><!--QuoteEBegin-->Для: DNT
    Дай полный код
    [snapback]32758" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Sub Initialize
    Dim Session As New NotesSession
    Dim DB As NotesDatabase
    Dim View As NotesView
    Dim Doc As NotesDocument
    Dim SetupDoc As notesdocument
    Dim Num As Variant
    Dim DC As NotesDocumentCollection
    Set DB = Session.CurrentDatabase
    Print "### Started DefferredCheck Agent (" + Cstr(Time) +") ###"
    'определяем документ настроек
    Set view = db.GetView( "wSetup" )
    If view.TopLevelEntryCount=0 Then
    Messagebox "Нет документа настройки!", 48,"Свяжитесь с администратором!"
    End
    End If
    If view.TopLevelEntryCount>0 Then
    Set setupdoc = view.GetLastDocument
    End If

    'выбираем все доки в отложенных
    search = "(Form='MainForm') & (Faza = '3') & (@Date(MDateNext) = @Date(@Now))"
    Set col = db.Search(search, Nothing, 0)
    For i =1 To col.Count
    Set doc = col.GetNthDocument(i)
    doc.faza="1"
    doc.status = "0"
    doc.exec = "0"
    doc.MDateNext = ""
    Call doc.save(True,True)
    Next
    setupdoc.MoveToFaza1 = col.count 'запоминаем кол-во переданных доков
    Call setupdoc.save(False,False)
    'определяем вью
    Set view = db.GetView( "wAutorization" )
    'Отправляем уведомление инициатору проекта
    Set memo=New NotesDocument (db)
    memo.Form="Memo"
    memo.Subject = "База данных 'Документы [Фин. отдел]' " & " Запрос на авторизацию документов..."
    memo.SendTo = SetupDoc.sAutName(0)
    Set rtitem = New NotesRichTextItem (memo,"Body")
    If rtitem.type=RICHTEXT Then
    Call rtitem.AddNewLine(1)
    Call rtitem.Appendtext( "Наступил день авторизации документов находившися в 'отложенных'. Они перемещены и ждут авторизации." )
    Call rtitem.AddNewLine(1)
    Call rtitem.Appendtext("Требуется Ваша авторизация.")
    Call rtitem.AddNewLine(2)
    Call rtitem.Appendtext("Чтобы открыть БД для авторизации щелкните мышью по ссылке на иконке --->>> ")
    Call rtitem.AppendDocLink(view,"Не авторизованные документы")
    Call rtitem.AddNewLine(1)
    End If
    Call memo.Send(False)
    Print "### Stoped DefferredCheck Agent (" + Cstr(Time) +") ###"
    End Sub
     
  14. Domino6

    Domino6 Гость

    <!--QuoteBegin-DNT+30:03:2006, 09:06 -->
    <span class="vbquote">(DNT @ 30:03:2006, 09:06 )</span><!--QuoteEBegin-->Dim DC As NotesDocumentCollection
    [snapback]32759" rel="nofollow" target="_blank[/snapback]​
    [/quote]

    Замени на
    Dim col As NotesDocumentCollection
     
Загрузка...

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