Общие вопросы > Разработка приложений
Конфликтные документы. Как минимизироват
cybergeene:
Вопрос: У пользователя А открыт документ в режиме просмотра, пользователь Б программно меняет в документе поле (одно какое-нибудь) и выходит. Каким образом отследить в документе, отрытого пользователем А, при нажатии на клавишу редактирования, что документ был изменен?
ViV:
Если документ был открыт в режиме просмотра, то конфликта не будет.
А так, пользуйтесь блокировками, отслеживайте программно, что документ заблокирован другим пользовтелем.
cybergeene:
Пользователь Б уже вышел. Блокировка снята. Пользователь Б сохранил документ. Получается, пользователь А видит старый документ. Каким образом можно определить, что документ открытый пользователем А и сохраненный пользователем Б в базу - разные?
Пробовали таким образом:
--- Код: ---
Set doc = Source.Document
sdate = Source.Document.LastModified
UIDS = doc.UniversalId
Set dbn = New NotesDatabase ( db.Server, db.FilePath )
Set doc = dbn.GetDocumentByUNID( UIDS ) 'переопределяем doc
ddate = doc.LastModified
Set uidoc = workspace.CurrentDocument
sdate = uidoc.Document.LastModified
If ddate > sdate Then
isCHdoc = True 'isCHdoc - функция
Messagebox( "документ был изменён. переоткрываем его. " )
End If
--- Конец кода ---
Даже если документ и был кем-то изменен, данный скрипт не видит.
Что посоветуете?
ViV:
Вы пробовали выводить ddate и sdate, они отличаются?
Сравнивать даты/времена лучше через функцию Timedifference/Timedifferencedouble класса NotesDateTime.
cybergeene:
ddate и sdate были одинаковые, принадлежавшие открытому документу
Навигация
Перейти к полной версии