打开父表单时Lotus Notes文档字段缺失技术咨询
Lotus Notes 9客户端多窗口异常问题排查思路
作为有25年Lotus Notes/Domino开发经验的老鸟,我还是头一回碰到这种奇怪的情况,先把当前的场景和操作流程梳理清楚:
场景细节
- 环境:基于Notes 9客户端的业务应用
- 操作流程:
- 打开使用
FORM A的文档DOC A,此时存在原应用窗口 +DOC A文档窗口 - 点击
DOC A上的操作按钮,通过LotusScript代码创建并打开使用FORM B的新文档DOC B DOC B并非DOC A的响应文档,但代码会批量将DOC A的字段值复制到DOC B中- 最终出现了3个窗口:原应用窗口、
DOC A文档窗口、DOC B文档窗口(推测这是超出预期的异常表现)
- 打开使用
可能的排查方向
1. 检查LotusScript打开文档的逻辑参数
首先聚焦按钮里打开DOC B的核心代码,常用的NotesUIWorkspace.EditDocument方法如果参数设置不当,很容易触发额外窗口:
- 确认代码中调用
EditDocument时的参数,比如EditDocument(True, docB)里的布尔参数是否合理,后端文档docB是否在当前UI上下文里触发了不必要的新窗口实例 - 排查是否存在重复调用打开文档的代码,比如字段复制过程中误触发了两次窗口打开操作
2. 排查字段复制的副作用
批量复制字段时,容易忽略系统字段或触发隐藏事件:
- 检查是否复制了
$WindowTitle、$Flags这类和客户端窗口行为绑定的系统字段,这类字段可能会干扰文档打开的窗口表现 - 确认字段复制过程中是否触发了
DOC B表单的PostOpen、QueryOpen事件,或者关联的代理,这些逻辑里是否存在窗口操作的代码
3. 验证Notes 9客户端版本的特定问题
Notes 9部分早期版本存在窗口管理的已知bug:
- 检查客户端是否安装了最新的Fix Pack(比如FP8及以上),不少窗口渲染异常的问题在后续补丁中得到了修复
- 尝试在干净的Notes客户端配置下测试(新建数据目录,仅导入该应用),排除本地客户端配置文件损坏导致的异常
4. 排查窗口上下文冲突
如果原应用窗口是框架集(Frameset),DOC A在框架内打开,DOC B的打开逻辑可能和框架上下文冲突:
- 检查按钮代码中是否指定了窗口打开的目标,比如
NotesUIWorkspace.OpenDatabase或EditDocument的窗口参数,是否意外强制创建了新窗口实例
5. 简化测试定位根源
建议用最小化测试逐步缩小问题范围:
- 先注释所有字段复制代码,只保留创建并打开
DOC B的逻辑,看是否还会出现3个窗口 - 如果此时窗口表现正常,再逐步加回字段复制代码,定位到是哪个字段或哪段复制逻辑触发了异常
内容的提问来源于stack exchange,提问作者user2808054
相关产品推荐
相关产品推荐

