P
phantom76
а как задавать (создавать) ProfileDocument ? его должно определять какое-то поле?
да точку убрал сразу, была случайность..
но все равно всплывает предупрежедение и происходит остановка...
Function Mailer (Adreses As String, document As NotesDocument) As String
Dim s As New NotesSession
Dim memo As NotesDocument
Dim rtitem As NotesRichTextItem
Dim db1 As NotesDatabase
Set db1 = s.CurrentDatabase - будет ли работать в случае запуска агента на сервере?
'-------------------------------------------------------------------
' Создаем уведомление
'-------------------------------------------------------------------
memo.form = "Memo"
memo.SendTo = Adreses
memo.Subject = "Напоминание"
Set rtitem = New NotesRichTextItem (memo, "Body")
Call rtitem.AddNewline(1)
Call rtitem.AppendText("срок отчетности")
Call rtitem.AddNewline(2)
Call rtitem.AppendDocLink(document,db1.Title)
Call memo.Send(False)
mailer = "сообщение отправлено"
End Function
а вто sub из которой она вызывается:
Sub Initialize
Dim ses As New NotesSession
Dim db As NotesDatabase
Set db=ses.CurrentDatabase
Dim doc As NotesDocument
Dim memo As NotesDocument
Dim dc As NotesDocumentCollection
Dim dc2 As NotesDocumentCollection
Dim doc2 As NotesDocument
Dim s As String
Dim dateTime1 As NotesDateTime
Dim dateTime2 As NotesDateTime
Dim dateTime3 As NotesDateTime
Set dateTime1 = New NotesDateTime(Format (Today,"dd.mm.yyyy"))
Set dateTime3 = New NotesDateTime(Format (Today,"dd.mm.yyyy"))
Call dateTime1.AdjustDay(-31) ' устанавливаем дату на месяц назад
' -------------------------------------- читаем документ настройки
Print "-----------------START --------------------"
searchFormula2$ = {Form = "Settings"}
Set dc2 = db.Search(searchFormula2$,Nothing,0) ' выборка документов настройки
Set doc2 = dc2.GetFirstDocument
Print "отобрано документов настройки: " & dc2.Count
Print "-------------------------------------------------"
Print "отсечка для поиска " & dateTime1.DateOnly
searchFormula$ = {Form = "NewRep"}
Set dc = db.Search(searchFormula$, dateTime1,0) ' выборка документов за последний месяц
Set doc = dc.GetFirstDocument
Print "отобрано документов " & dc.Count
While Not (doc Is Nothing)
Set dateTime2 = New NotesDateTime(Format (doc.Getitemvalue("Rep_date")(0),"dd.mm.yyyy") )
Print "отсечка: " & dateTime2.timedifference(dateTime3) & " документ от " & dateTime2.DateOnly
' отбираем документы, у которых срок отчета не более недели
If dateTime2.timedifference(dateTime3) > 0 And dateTime2.timedifference(dateTime3) < 604800 Then
Print dateTime3.DateOnly +": отправка напоминаний на отчет от " + dateTime2.DateOnly
Print "date1_cur" & doc.GetItemValue("date1_cur")(0)
If doc.GetItemValue("date1_cur")(0)="" Then
Print "отправка уведомления в офис 1 : " & doc2.GetItemValue("Remind_1")(0)
' Print "поле документа: " & doc.GetItemValue("date1_cur")(0).text
Call mailer (doc2.GetItemValue("Remind_1")(0) ,doc) ----------------------------- здесь выдается Object Variable not set !
End If
End If
Set doc = dc.GetNextDocument(doc)
Wend
End Sub
да точку убрал сразу, была случайность..
но все равно всплывает предупрежедение и происходит остановка...
Function Mailer (Adreses As String, document As NotesDocument) As String
Dim s As New NotesSession
Dim memo As NotesDocument
Dim rtitem As NotesRichTextItem
Dim db1 As NotesDatabase
Set db1 = s.CurrentDatabase - будет ли работать в случае запуска агента на сервере?
'-------------------------------------------------------------------
' Создаем уведомление
'-------------------------------------------------------------------
memo.form = "Memo"
memo.SendTo = Adreses
memo.Subject = "Напоминание"
Set rtitem = New NotesRichTextItem (memo, "Body")
Call rtitem.AddNewline(1)
Call rtitem.AppendText("срок отчетности")
Call rtitem.AddNewline(2)
Call rtitem.AppendDocLink(document,db1.Title)
Call memo.Send(False)
mailer = "сообщение отправлено"
End Function
а вто sub из которой она вызывается:
Sub Initialize
Dim ses As New NotesSession
Dim db As NotesDatabase
Set db=ses.CurrentDatabase
Dim doc As NotesDocument
Dim memo As NotesDocument
Dim dc As NotesDocumentCollection
Dim dc2 As NotesDocumentCollection
Dim doc2 As NotesDocument
Dim s As String
Dim dateTime1 As NotesDateTime
Dim dateTime2 As NotesDateTime
Dim dateTime3 As NotesDateTime
Set dateTime1 = New NotesDateTime(Format (Today,"dd.mm.yyyy"))
Set dateTime3 = New NotesDateTime(Format (Today,"dd.mm.yyyy"))
Call dateTime1.AdjustDay(-31) ' устанавливаем дату на месяц назад
' -------------------------------------- читаем документ настройки
Print "-----------------START --------------------"
searchFormula2$ = {Form = "Settings"}
Set dc2 = db.Search(searchFormula2$,Nothing,0) ' выборка документов настройки
Set doc2 = dc2.GetFirstDocument
Print "отобрано документов настройки: " & dc2.Count
Print "-------------------------------------------------"
Print "отсечка для поиска " & dateTime1.DateOnly
searchFormula$ = {Form = "NewRep"}
Set dc = db.Search(searchFormula$, dateTime1,0) ' выборка документов за последний месяц
Set doc = dc.GetFirstDocument
Print "отобрано документов " & dc.Count
While Not (doc Is Nothing)
Set dateTime2 = New NotesDateTime(Format (doc.Getitemvalue("Rep_date")(0),"dd.mm.yyyy") )
Print "отсечка: " & dateTime2.timedifference(dateTime3) & " документ от " & dateTime2.DateOnly
' отбираем документы, у которых срок отчета не более недели
If dateTime2.timedifference(dateTime3) > 0 And dateTime2.timedifference(dateTime3) < 604800 Then
Print dateTime3.DateOnly +": отправка напоминаний на отчет от " + dateTime2.DateOnly
Print "date1_cur" & doc.GetItemValue("date1_cur")(0)
If doc.GetItemValue("date1_cur")(0)="" Then
Print "отправка уведомления в офис 1 : " & doc2.GetItemValue("Remind_1")(0)
' Print "поле документа: " & doc.GetItemValue("date1_cur")(0).text
Call mailer (doc2.GetItemValue("Remind_1")(0) ,doc) ----------------------------- здесь выдается Object Variable not set !
End If
End If
Set doc = dc.GetNextDocument(doc)
Wend
End Sub