1

Тема: Получение данных в открытый документ с другого документа. История.

Была задача - в открытый у клиента лотусовый документ получить его историю движения из другого документа после нажатия кнопки отправка.
Переоткрывать документ не надо.
Документы в базе1 хранили часть своей истории в документах в базе2.

Реализация.
На форме есть поле hlog, если оно = "1", то история записана, стоп.
В кнопке "отправка" на лотус скрипте:

Call uiworkspace.URLOpen( "javascript: document.forms[0].timer.click();" )

На форме:
Кнопка "timer" - JavaScript

//Вызов функции проверки истории
checkField()

Событие формы JS Header (JavaScript)

var enterFields = ["hlog"];
var f = document.forms[0];
var timeoutID

function checkField ()
{
var tmp
tmp = f[enterFields[0]].value    //значение поля hlog

try{
if(tmp==1)return; //  если поле hlog = "1"
f.readhistory.click();        // нажимаем кнопку readhistory
    }

catch(e){} // при ошибке
    tmp = null
    f.repeatFunction.click()
}

Кнопка "readhistory" - лотусскрипт

Sub Click(Source As Button)
' Читает историю из БД роутер и переносит в документ    
    Dim Session As New NotesSession
    Dim ws As New NotesUIWorkspace
    
    Dim server As String
    Dim DBFileName As String
    Dim DB_Mejved As NotesDatabase
    server = "Br/info"
    DBFileName = "romdc\uter.nsf"
    
    Dim db As NotesDatabase ' Текущая БД
    Dim doc As NotesDocument ' Текущий 
    Dim doc2 As NotesDocument
    Dim NoteID As String
    Dim Unid As String ' текущего документа
    Dim view As NotesView
    Set db = session.CurrentDatabase
    Set doc =ws.CurrentDocument.Document
    
    Dim mes As String
    Dim mes2 As String
    
    Unid=    doc.id(0)
    
    'Проверка доступа к Базе Роутер(БД для пересылки межвед документов)
    Set DB_Mejved = session.GetDatabase(server, DBFileName)
    If Not DB_Mejved.Isopen Then
        Messagebox "Нет доступа к Базе Роутер!"
        Exit Sub
    End If
    
    mes=doc.history(0)
    
    Set view = DB_Mejved.getview("foSearch")
    Call view.Refresh()
    Call view.Refresh()
    Set doc2 = view.GetDocumentByKey(Unid)
    If(doc2 Is Nothing)Then 
        Exit Sub
    Else
        If(doc2.log_flag(0)="1")Then
            mes2=doc2.doclog(0)
            
            doc.history=mes2+ " "&Chr(13) +" "&Chr(13)  + mes
            doc.hlog="1"
            'Call doc.refresh
            'Msgbox mes2
            Msgbox "Документ доставлен до адресата."
            
        End If
    End If
        
End Sub

Кнопка с свойством Name = repeatFunction (JavaScript)

//Очищает память, и запускает заново таймер
clearTimeout(timeoutID)
//delete timeoutID
timeoutID = null
timeoutID = setTimeout('checkField()', 1000)

Поделиться