我已经在Lotus(IBM)Notes / domino开发了25年之久,我以前从未遇到过这种情况 .
该应用程序基于Notes客户端,使用Notes 9 .
我打开一个文档(DOC A),它使用FORM A.从这个文档中,有一个按钮来创建一个使用FORM B的新文档 . 这将在一个新窗口中打开 . DOC B不是DOC A的响应,但是一些(很多)LotusScript从DOC A复制到DOC B.
所以现在我们打开了3个窗口:原始应用程序,DOC A doc和DOC B.
我对DOC B进行了编辑,并将其保存 . 我关闭它,让DOC A打开,然后导航到可以找到DOC B的另一个视图 .
询问文档属性字段列表以查看我编辑的字段(在我的情况下为“InvoiceComments”) . 是的,我的文字就在那里 .
然后我运行一个脚本代理,它获取DOC B并打印出InvoiceComments的内容 . 这是空白的 . 编写Web代理以获取相同的文档...我的文本可以在InvoiceComments中找到 .
它绝对是同一个文件,同一个UNID等 .
这就是:当查看文档属性,字段列表时,我可以在字段值中看到myy编辑 . 通过Notes客户端运行脚本以获取该文档时(通过UnprocessedDocument或从视图中),该字段具有其“旧”值(空白)
关于发生了什么的唯一线索是,如果我关闭DOC A,那么打印“InvoicComments”值的代理突然开始尊重磁盘上的内容(即,它的行为) .
听起来像笔记本客户端的一个错误,但我不知道如何绕过它,因为人们会想要做上面的过程 .
2 回答
前一段时间我使用大脚本库和全局变量 .
我需要大量调试才能找出问题所在 .
本质上问题是:只要代码中存在一个包含文档Doc A的变量ANYWHERE,那么来自任何上下文的任何脚本 - 运行将获得该文档的“旧”值(尽管前端显示已更改)项目 Value ) .
删除文档B中任何代码中保存文档A的NotesDocument-对象,或使用Set .... = Nothing来防止发生这种情况 .
所以使用这两行中的任何一行都会有所帮助:
一位顾问写道,我不能赞同这个代码,但也许这种模式可以解决你的问题:
他发现即使你有一个带有有效UNID的“有效”文档对象,当你把它作为UiDoc打开时,Notes(令人沮丧地)会在内存中保留一份副本,所以他不得不求助于这个想法 . (它是一个错误还是一个怪癖?)我认为这基本上是托斯滕所建议的 .