Запрет открытия Lock'ного док-та

morpheus

скриптописец
07.08.2006
3 915
1
#1
Вопрос
Э.. народ , а случаем никто не предотвращал открытие/редактирование документов более чем одним (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")))
Автор - Koyote23

Обсуждение

Комментарий модератора
Не совсем понятно почему автор не использует LockHolders property , а использует
expression = "@DocLock([STATUS])" Lockers= Evaluate(expression,Doc)

Не забываем включить в опциях БД возможность лочить документы, и указываем Master lock server
 

Вложения