Вставить связь:
Sub Click(Source As Button)
On Error Goto Errh
Dim ns As New NotesSession
Dim db As NotesDatabase
Dim agent As NotesAgent
Dim docRequest As NotesDocument 'Новый документ запрос
Dim linkdoc As NotesDocument 'Док из которого копируем связь
Dim curdoc As NotesDocument 'Текущий(куда копируем связь)док
Dim Unid As String
Dim Unid1 As String
Dim uilinkdoc As NotesUIDocument
Dim uicurdoc As NotesUIDocument
Dim paramid As String
Dim nw As New NotesUIworkspace
Set uicurdoc=nw.CurrentDocument
Set curdoc=uicurdoc.Document
If uicurdoc.EditMode Then
uicurdoc.Save
End If
Set db = ns.CurrentDatabase
'Set curdoc=nw.CurrentDocument.Document
'Читаем переменную окружения и выделяем из нее Url(link_doc)
Dim url As String
url=ns.GetEnvironmentString("_url")
Unid=GetUnidFromUrl(url)
Unid1=GetUnidFromUrl(curdoc.NotesURL)
'Создаем новый док(док-запрос) и записываем в него url дока(linkdoca) из которого копируем связь и url дока(текущего) куда вставляем связь
Set docRequest = db.CreateDocument
Set item = docRequest.AppendItemValue("Field_linkdoc_url", url)
Set item = docRequest.AppendItemValue("Field_curdoc_url", curdoc.NotesURL)
Call docRequest.save(True, False)
'Получаем агента(серверного с правами менеджера), передаем ему параметр(Noteid дока-запроса,и запускаем агент)
Set agent = db.GetAgent("Links_Paste")
paramid = docRequest.Noteid
Call Agent.RunOnServer(paramid)
''
REM Необходимо обновить два дока:
REM Закрываем текущий, получаем предыдущий, закрываем предыдущий, открываем предыдущий на просмотр
REM получаем текущий и окрываем на просмотр
'В переменную paramid записываем параметр Noteid текущего документа, стираем его из памяти и закрываем
'paramid = curdoc.Noteid
paramid = curdoc.UniversalID
Delete curdoc
Call uicurdoc.Close(True)
'''Call nw.CurrentDocument.Close(True)
''
'Получаем linkdoc, проверяем если он открыт в UI устанавливаем его текущим и закрываем
Set linkdoc = db.GetDocumentByUNID (Unid)
If linkdoc.IsUIDocOpen Then
Call nw.SetTargetFrame("")
Set uilinkdoc = nw.EditDocument(False, linkdoc, False,,False,False)
Delete linkdoc
Call uilinkdoc.Close(True)
'Delete linkdoc
'End If
'Проверяем если linkdoc открыт в UI, стираем его из памяти, получаем его, окрываем на просмотр
'If linkdoc.IsUIDocOpen Then
'Delete linkdoc
Set linkdoc = db.GetDocumentByUNID (Unid)
Set uilinkdoc = nw.EditDocument(False, linkdoc)
End If
'Получаем Текущий док и открывает его на просмотр
'Set curdoc = db.GetDocumentById(paramid)
Set curdoc = db.GetDocumentByUNID(paramid)
Set uicurdoc = nw.EditDocument(False, curdoc)
''
Exit Sub
errh:
Msgbox Error & | in line | & Erl(), 64, |Lotus Notes (| & Lsi_info(2) & |)|
Exit Sub
End Sub