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

  • Автор темы Автор темы Serduko
  • Дата начала Дата начала
S

Serduko

Есть ссылка на документ, полученная в начале исполнения (например агента на клиенте), в процессе исполнения, в другой сессии, другим пользователем изменяются данные в этом документе. Как получить ссылку на тот же документ с измененными данными, в рамках исполнения текущей сессии (агента), повторная инициализация (например Getdocumentbyunid) не помогает?
 
Getdocumentbyunid - как раз таки помогает, но только если данные точно уже изменены, документ сохранен и приехал на этот сервер.
Если он еще не сохранен, то никаких изменений нет.
 
Getdocumentbyunid - как раз таки помогает, но только если данные точно уже изменены, документ сохранен и приехал на этот сервер.
Если он еще не сохранен, то никаких изменений нет.
Документ сохранен и приехал на тот сервер, я проверял. Getdocumentbyunid ловит старый документ.
 
Serduko
Getdocumentbyunid ловит старый документ
Что-то я не верю... Сейчас сам еще раз перепроверю, пока отчет строится не могу.
У меня такая штука используется для обработки конфликтов, так что странно.
Правда я в другую переменную записываю. Попробуйте пока обнулить свой первоначальный документ и записать потом туда его снова.

Domino-Designer
view.GetDocumentByKey вас спасет, но 1 раз =)
Ну да, осталось только сделать вьюху и индекс в ней построить.
 
Поковырял, такое дело:
Надо обнулить док и получать его снова через переменную, где содержится 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">
Код:
	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
---------------------------
ОК
---------------------------
 
Поковырял, такое дело:
Надо обнулить док и получать его снова через переменную, где содержится UNID

Имхо, ход мысли правильный, а вот способ реализации ...
Для этого существует statement Delete . Подробности в букваре
 
а всё из-за "Оптимизации" скрипта, когда индусы подумали что не гоже каждый раз брать один и тот же обьект и задёргивать базу :(
 
Боюсь представить какой у LS GC, вернее его реализация.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы