1

Тема: Отправка уведомлений в BIMOID с LotusScript.

Вызываем в кнопке отправки документа функцию
    Call BIMOID (curdoc, picklist, strukdb, user , db  )

Создаем функцию  BIMOID  в какой-либо библиотеке, и передаем в неё параметры - для отправки уведомлений в мессенджер BIMOID через серверный агент BIMOID.


Sub BIMOID (curdoc As NotesDocument, picklist As Variant, strukdb As NotesDatabase, user As String, db As NotesDatabase )
    On Error GoTo Errh   ' для отправк уведомлений в месседжер BIMOID серез серверный агент
    Dim item As NotesItem
    Dim strukview As NotesView
    Set strukview = strukdb.GetView("notespeople")
    
    Dim paramid As String 
    Dim agent As NotesAgent    
    Dim docRequest As NotesDocument 
    Dim docstrukt As NotesDocument
    Dim BIMOID As Variant
    
    BIMOID =""
    str1=""
    ForAll v In picklist   'Найти в БД Структура и взять chatid
        Set docstrukt =    strukview.GetDocumentByKey(v)
        BIMOID = BIMOID +  docstrukt.chatid(0) + Chr(10)
    End ForAll    
    Print "BIMOID " BIMOID
    
    mes= "Вам пришел документ " + CStr(curdoc.datereg(0)) + " №" + CStr(curdoc.fullregnom(0))   +Chr(10) + " от  "  + user
    
    Set docRequest = db.CreateDocument     
    Set item = docRequest.AppendItemValue("doc_mes", mes) 
    Set item = docRequest.AppendItemValue("FIO", BIMOID) 
    Call docRequest.save(True, False)
    
    Print "stsrt agent BIMOID"
    Set agent = db.GetAgent("BIMOID")
    paramid = docRequest.Noteid
    Print "paramid=" + paramid
    If Not agent.RunOnServer(paramid) = 0 Then
        Print "не могу запустить агент"
    End If
    Print "end agent BIMOID"

    Exit Sub
Errh:    
    Print "Ошибка BIMOID: " & Error(Err) & " в строке " & Erl
    Exit Sub
End Sub

Поделиться

2

Re: Отправка уведомлений в BIMOID с LotusScript.

Код серверного агента BIMOID , который записывает в файл accounts.txt - кому слать уведомление.
В файл message.txt - текст уведомлений.
В файле start.bat все пути абсолютные:

D:\ObimpCmd\ObimpCmd.exe /id=doc /pwd=docdoc /srv=10.4.50.250 /port=7023 /client="OBIMP Console" /type=service /ver=1.2.0.1234  /fileto=D:\ObimpCmd\accounts.txt /filetext=D:\ObimpCmd\message.txt /interval=1000

Вот код агента

Sub Initialize 
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim item As NotesItem
    Dim tstr As String
    Dim agent As NotesAgent 
    Dim Noteid As Variant
    Dim strm As NotesStream
     
    
    Dim docrequest As NotesDocument '--документ-запрос 
        Print "BIMOID start"
    On Error GoTo errhandler
    
    Set strm = session.CreateStream()
    Set db=session.Currentdatabase
    Set agent = session.CurrentAgent   
    NoteId = agent.ParameterDocID 

    Set docrequest = db.GetDocumentById(NoteId)
    Set item = docrequest.GetFirstItem("doc_mes")
    Print "doc_mes:"  item.Text
    Set strm = session.CreateStream()
    Call strm.Open("d:\ObimpCmd\message.txt","UTF-8")
    Call strm.Truncate
    Call strm.WriteText(item.Text)
    Call strm.Close        
    
    Set item = docrequest.GetFirstItem("FIO")
    Print "FIO:"  item.Text
    tstr=Replace(item.Text,";",Chr(10))
    Set strm = session.CreateStream()
    Call strm.Open("d:\ObimpCmd\accounts.txt","windows-1251")
    Call strm.Truncate
    Call strm.WriteText(tstr)
    Call strm.Close    
    Dim ObimpCmd As String
    ObimpCmd =  Shell ("D:\\ObimpCmd\\start.bat",3)    
    
    Dim xx As String
    'xx = Shell("CALC.EXE", 1)
    
    Dim Ob As Variant
    xx= {@Command( [Execute]; "d:\ObimpCmd\start.bat" )}

    Ob =  Evaluate (xx$, docrequest)
    Print ObimpCmd
    Print "BIMOID finish"
    Exit Sub
errhandler:    
    Print " !agent BIMOID "  Error & | in line | & Erl()

    Exit Sub
End Sub
    

Поделиться