Общие вопросы > Разработка приложений

Конфликтные документы. Как минимизироват

(1/3) > >>

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 были одинаковые, принадлежавшие открытому документу

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии