G
Guest
Есть агент, который запускается по расписанию.
Он ищет просроченные доки и возвращает их авторам.
При этом должны меняться значения в связанных доках в другой базе, но почему-то ничего не меняется.
Базы лежат в одной папке. Агент подписан сервером и права на вторую базу имеет.
Он ищет просроченные доки и возвращает их авторам.
При этом должны меняться значения в связанных доках в другой базе, но почему-то ничего не меняется.
Базы лежат в одной папке. Агент подписан сервером и права на вторую базу имеет.
Код:
Sub Initialize
On Error Resume Next
Dim session As New NotesSession
Dim db As NotesDatabase
Dim sdb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim doc, bdoc As NotesDocument
Dim ndoc As NotesDocument
Dim memo As NotesDocument
Dim view As NotesView
Dim sview As NotesView
Dim mail(1 To 3) As String
Set db = session.CurrentDatabase
Dim dateTime As New NotesDateTime("12/01/94")
SearchString$ = {Form = "Request" & Status="5" & Priznak_FS!="Признак наличия документов в ФС" & Visible!="0"}
Set collection = db.Search(SearchString$,dateTime,0)
Set db2=session.GetDatabase("","New EPS.NSF",False)
sums=Split(doc.GetFirstItem("RBudgetSum").text,";")
'Msgbox collection.Count
If collection.Count>0 Then
Dim dateTimeNow As New NotesDateTime( Now )
tnow=dateTimeNow.DateOnly
tnow=Cdat(tnow)
Call dateTimeNow.AdjustDay( -6 )
tnext=dateTimeNow.DateOnly
tnext=Cdat(tnext)
'Msgbox Str(tnow)+" "+Str(tnext)
For i=1 To collection.Count
Set doc = collection.GetNthDocument(i)
Dim dateTimeNow1 As New NotesDateTime( doc.BOKDate(0) )
cdate=dateTimeNow1.DateOnly
cdate=Cdat(cdate)
'Msgbox Str(tnow)+" "+Str(tnext)+" "+Str(cdate)+" "+doc.BossName_Ok(0)+" "+Str(tnext-cdate)
If tnext>=cdate Then
'Msgbox "Пошло"
'Уведомление
Set mdoc = db.CreateDocument
mdoc.Form = "Memo"
mdoc.SendTo = doc.OwnerNotesName(0)
mdoc.BlindCopyTo = "Yulia Neverova/BWD@CORP"
Set rtitem = New NotesRichTextItem( mdoc, "Body" )
Call rtitem.AddNewLine(2)
Call rtitem.AppendText("Ссылка на документ -> ")
Call rtitem.AppendDocLink( doc, "документ " )
Call rtitem.AddNewLine(1)
If tnext-cdate=0 Then
mdoc.Subject = "Уведомление о скором истечении срока заявки"
Call rtitem.AppendText("Заявка находится в статусе <К оплате> 7 дней, документы в ФЭС отсуствуют.")
Call rtitem.AddNewLine(1)
Call rtitem.AppendText("При отсуствии документов, завтра заявка будет возвращена автору автоматически.")
Call rtitem.AddNewLine(1)
mail(1) = doc.ManagerNotesName(0)
Elseif tnext-cdate>1 Then
mdoc.Subject = "Уведомление об истечении срока заявки"
Call rtitem.AppendText("Заявка находилась в статусе <К оплате> больше 7 дней, а документов в ФЭС на нее не поступало.")
Call rtitem.AddNewLine(1)
Call rtitem.AppendText("По этой причине она возвращена Вам на доработку.")
Call rtitem.AddNewLine(1)
value = Evaluate({FIELD Returned:="Возвращено";FIELD HistoryWhen:=@Now;FIELD HistoryWho:="автоматически";FIELD HistoryAction:="Возвращен";FIELD History:=History:(@Text(HistoryWhen) + " " + HistoryWho + ": "+HistoryAction+": истек срок ожидания документов в ФЭС");@SetField("Status";"0");@SetField("Priznak_FS";"Нет документов");},doc)
Call doc.Save(True, True)
-----------------------------------------------------------------------------------------------
sums=Split(doc.GetFirstItem("RBudgetSum").text,";")
j=0
ids=Arrayunique(Split(doc.GetFirstItem("RIDBudget").text," "))
Forall id In ids
Set bdoc=db2.GetDocumentByUNID(id)
If bdoc.GetFirstItem("RACHistory") Is Nothing Then Call bdoc.AppendItemValue("RACHistory","")
Set item=bdoc.GetFirstItem("RACHistory")
Call item.AppendToTextList(Cstr(Now) +" возвращено "+Cstr(sums(j)+" "+session.UserName+" -> "+doc.GetFirstItem("RequestDescription").text))
Call bdoc.ReplaceItemValue("RARemainder",Cstr(Cdbl(bdoc.GetFirstItem("RARemainder").text)+Cdbl(sums(j))))
j=j+1
Call bdoc.Save(True, True)
End Forall
-----------------------------------------------------------------------------------------------
mail(1) = doc.ManagerNotesName(0)
End If
mdoc.CopyTo = mail
Call mdoc.Send(False)
End If
Next
End If
End Sub