%REM
Function block_create
Description: Пробует создать блокировку. В случае успеха возвращает true.
В случае raiseError=true, в случае ошибки возвращает диалогбокс с содержанием ошибки
%END REM
function block_create(doc As NotesDocument, raiseError As Boolean) As Boolean
Dim session As New NotesSession
'Инициализируем базу блокировок
Dim dbBlock As NotesDatabase
If Not init(dbBlock, doc, raiseError) Then Exit Function
'Пробуем блокировать
Dim flagError As Boolean
Dim docBlock As NotesDocument
Set docBlock = dbBlock.Createdocument()
On Error 4000 GoTo errHandler_4000
GoSub processDocBlock
m:
If Not flagError Then
'Успешно заблокировали
block_create = True
Exit Function
End If
'Заблокировать не удалось
On Error 4091 Resume Next
Set docBlock = dbBlock.Getdocumentbyunid(doc.Universalid)
If Not docBlock Is Nothing Then
'Нашли блокировку, значит заблокирован
Dim nn As NotesName
Set nn = New NotesName(docBlock.userName(0))
If raiseError Then MessageBox "Документ заблокирован пользователем "+nn.Abbreviated, 16, "Операция прервана!"
Exit Function
End If
'Блокировку не нашли
If raiseError Then MessageBox "Документ заблокировать не удалось, попробуйте еще раз!", 16, "Операция прервана!"
ex:
Exit Function
errHandler_4000:
'Такой unid уже есть в базе данных
flagError = true
Resume m
processDocBlock:
With docBlock
.universalId = doc.universalId
.server = doc.parentDatabase.Server
.replicaId = doc.parentDatabase.Replicaid
.title = doc.parentDatabase.Title
.filePath = doc.parentDatabase.filePath
.userName = session.Effectiveusername
Dim item As NotesItem
Set item = .Getfirstitem("userName")
item.Isauthors = True
Call .Save(True, True)
End With
Return
End Function