Форум продуктов IBM Lotus
Общие вопросы => Разработка приложений => Тема начата: cybergeene от 07 Октябрь 2010, 17:41:12
-
Стандартно реализована мягкая блокировка, т.е. при попытке войти в редактирование из клиента
лотус пользователю №2 говорит, что документ заблокирован таким-то юзерем.
Если же, как описано в заголовке темы, пользователь №2 сохранит документ с помощью кнопки, в которой стоит
doc.Save(False,True), то при нажатии на сохранить у первого пользователя появится сообщение о возможности
создания конфликта.
Есть ли стандартная функция в LotusScript, позволяющая отловить то, что документ уже находится на редактировании
у пользователя №1?
-
Обрабатывайте в лотусскрипте блокировки перед doc.Save
-
Ну да, так и делаем. Создаем документ doc_lock, в одном из полей которого записан UID залоченого дока, после выполнения doc.Save этот dock_lock удаляем.
Еще один способ хочу попробывать - запретить редактирование документа пользователями в событии документа QueryModeChange (т.е. Continue=False) и проверять doc.LastModified вот такой функцией
Function Reopen_doc (doc_old As NotesDocument, viewUID As NotesView) As NotesDocument
Dim doc_new As NotesDocument
Dim UID_str As String
Dim LastMod As Variant
Dim LastMod1 As Variant
UID_str = doc_old.UniversalID
LastMod = doc_old.LastModified
Call viewUID.Refresh ' Панов из Интертраста рекоммендует
Call viewUID.Refresh ' 2 раза вызывать .Refresh для надежности
Set doc_new = viewUID.GetDocumentByKey(UID_str)
LastMod1 = doc_new.LastModified
Print Str(Second(LastMod))+" - "+Str(Second(LastMod1))
If (LastMod <> LastMod1) Then
Set Reopen_doc = doc_new
Else
Set Reopen_doc = Nothing
End If
End Function
Если возвращается Nothing, то документ не изменялся каким-либо способом (на заднем или переднем плане).
viewUID - представление, в котором документы в первом столбце упорядочены по UID (только таким образом можно достать ссылку на измененный кем-то документ)