Тема: Получение данных в открытый документ с другого документа. История.
Была задача - в открытый у клиента лотусовый документ получить его историю движения из другого документа после нажатия кнопки отправка.
Переоткрывать документ не надо.
Документы в базе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)