Форум продуктов IBM Lotus

Общие вопросы => Разработка приложений => Тема начата: cybergeene от 07 Октябрь 2010, 17:41:12

Название: Если док находится на редактировании у №1, а №2 сохраняет LotusScript-ом?
Отправлено: cybergeene от 07 Октябрь 2010, 17:41:12
Стандартно реализована мягкая блокировка, т.е. при попытке войти в редактирование из клиента
лотус пользователю №2 говорит, что документ заблокирован таким-то юзерем.
Если же, как описано в заголовке темы, пользователь №2 сохранит документ с помощью кнопки, в которой стоит
doc.Save(False,True), то при нажатии на сохранить у первого пользователя появится сообщение о возможности
создания конфликта.
 Есть ли стандартная функция в LotusScript, позволяющая отловить то, что документ уже находится на редактировании
 у пользователя №1?
Название: Re: Если док находится на редактировании у №1, а №2 сохраняет LotusScript-ом?
Отправлено: ViV от 14 Октябрь 2010, 09:42:59
Обрабатывайте в лотусскрипте блокировки перед doc.Save
Название: Re: Если док находится на редактировании у №1,
Отправлено: cybergeene от 15 Октябрь 2010, 15:58:27
Ну да, так и делаем. Создаем документ 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 (только таким образом можно достать ссылку на измененный кем-то документ)