M
morpheus
Вопрос
Суть
В 6ке появился новый метод Lock у notesDocument. Он запрещает редактирование документа более чем одному пользователю одновременно. А вот открытие этого документа, при условии что ктото другой(в этот момент) уже редактирует? Как отследить?
Ответ
в Queryopen ставим
в PostOpen ставим
в QueryClose + Terminate ставим
Автор -
Комментарий модератора
Не совсем понятно почему автор не использует LockHolders property , а использует
expression = "@DocLock([STATUS])" Lockers= Evaluate(expression,Doc)
Не забываем включить в опциях БД возможность лочить документы, и указываем Master lock server
Э.. народ , а случаем никто не предотвращал открытие/редактирование документов более чем одним (1) пользователем ? Ну .. э .. типа если один человек открыл (читает / редактирует) документ то уже никто другой не может открыть документ [даже для просмотра].
Суть
В 6ке появился новый метод Lock у notesDocument. Он запрещает редактирование документа более чем одному пользователю одновременно. А вот открытие этого документа, при условии что ктото другой(в этот момент) уже редактирует? Как отследить?
Ответ
в Queryopen ставим
Код:
Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
Dim doc As NotesDocument
Dim session As New notessession
Dim user As notesname
Dim Lockers As Variant
Set doc = source.Document
expression = "@DocLock([STATUS])"
Lockers= Evaluate(expression,Doc)
Set user = New NotesName(Cstr(session.UserName))
If Cstr(Lockers(0))="" Then
Continue=True
Else
Continue=False
Forall names In lockers
If names= Cstr(user.Abbreviated) Then
Continue=True
Else
Continue=False
End If
End Forall
End If
If Continue=False Then
Msgbox "Документ сейчас открыт пользователем " + Cstr(Lockers(0)) + Chr(13) + "Свяжитесь с ним или администратором если вам необходимо открыть этот документ" + Chr(13) + "Или попросите пользователя открыть этот документ и закрыть.",64,"Locking"
End If
End Sub
в PostOpen ставим
Код:
@If(@DocLock([Status]) = "";@Do(@DocLock([Lock]);@StatusBar("Locking Succesfull"));@StatusBar("Already locked. Document is already locked by " + @DocLock([Status])))
в QueryClose + Terminate ставим
Код:
@If(@IsNotMember(@V3UserName;@DocLock([Status]));@StatusBar("Not authorized Document was locked by " +@DocLock([Status]) + ". Contact the lock owner");@Do(@DocLock([Unlock]);@StatusBar("Document Unlocked")))
Автор -
Ссылка скрыта от гостей
Ссылка скрыта от гостей
Комментарий модератора
Не совсем понятно почему автор не использует LockHolders property , а использует
expression = "@DocLock([STATUS])" Lockers= Evaluate(expression,Doc)
Не забываем включить в опциях БД возможность лочить документы, и указываем Master lock server