Повторное Получение Документа В Одной Сессии

Тема в разделе "Lotus - Программирование", создана пользователем Serduko, 9 июл 2014.

  1. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Есть ссылка на документ, полученная в начале исполнения (например агента на клиенте), в процессе исполнения, в другой сессии, другим пользователем изменяются данные в этом документе. Как получить ссылку на тот же документ с измененными данными, в рамках исполнения текущей сессии (агента), повторная инициализация (например Getdocumentbyunid) не помогает?
     
  2. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Getdocumentbyunid - как раз таки помогает, но только если данные точно уже изменены, документ сохранен и приехал на этот сервер.
    Если он еще не сохранен, то никаких изменений нет.
     
  3. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Документ сохранен и приехал на тот сервер, я проверял. Getdocumentbyunid ловит старый документ.
     
  4. Domino-Designer

    Domino-Designer Lotus team
    Lotus team

    Регистрация:
    6 дек 2011
    Сообщения:
    117
    Симпатии:
    4
    view.GetDocumentByKey вас спасет, но 1 раз =)
     
  5. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Serduko
    Что-то я не верю... Сейчас сам еще раз перепроверю, пока отчет строится не могу.
    У меня такая штука используется для обработки конфликтов, так что странно.
    Правда я в другую переменную записываю. Попробуйте пока обнулить свой первоначальный документ и записать потом туда его снова.

    Domino-Designer
    Ну да, осталось только сделать вьюху и индекс в ней построить.
     
  6. Serduko

    Serduko Well-Known Member

    Регистрация:
    11 окт 2011
    Сообщения:
    174
    Симпатии:
    0
    Пробовал
     
  7. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Поковырял, такое дело:
    Надо обнулить док и получать его снова через переменную, где содержится UNID
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Код</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
        Dim ses As New NotesSession
    Dim db As NotesDatabase
    Dim ag As notesagent
    Dim doc As NotesDocument
    Dim doc2 As NotesDocument
    Dim stri As String
    Dim unid As String
    Set db = ses.Currentdatabase

    Set ag = db.Getagent("du")
    'В агенте DU пробег по всем документам, test = "1" и save.
    Set doc = db.Unprocesseddocuments.Getfirstdocument()

    unid = doc.Universalid

    stri = "" & doc.Lastmodified & Chr(10) & Chr(13)
    Call ag.Run()

    Set doc = nothing
    Set doc = db.Getdocumentbyunid(unid)
    stri = stri & doc.Lastmodified & Chr(10) & Chr(13)

    Call ag.Run()

    Set db = ses.Currentdatabase
    Set doc2 = db.Getdocumentbyunid(unid)
    stri = stri & doc2.Lastmodified & Chr(10) & Chr(13)

    MsgBox stri
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Результат</div></div><div class="sp-body"><div class="sp-content">---------------------------
    ---------------------------
    09.07.2014 14:54:28

    09.07.2014 14:56:49

    09.07.2014 14:56:49
    ---------------------------
    ОК
    ---------------------------
     
  8. Andre

    Andre Well-Known Member

    Регистрация:
    29 июл 2004
    Сообщения:
    108
    Симпатии:
    0
    Имхо, ход мысли правильный, а вот способ реализации ...
    Для этого существует statement Delete . Подробности в букваре
     
  9. alexas1

    alexas1 Lotus team
    Lotus team

    Регистрация:
    10 апр 2014
    Сообщения:
    562
    Симпатии:
    214
    nothing делает ровно тоже самое.
     
  10. ToxaRat

    ToxaRat Чёрный маг
    Lotus team

    Регистрация:
    6 ноя 2007
    Сообщения:
    3.046
    Симпатии:
    18
    а всё из-за "Оптимизации" скрипта, когда индусы подумали что не гоже каждый раз брать один и тот же обьект и задёргивать базу :(
     
  11. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.051
    Симпатии:
    146
    Боюсь представить какой у LS GC, вернее его реализация.
     
Загрузка...

Поделиться этой страницей