Lotus Notes使用Select@all的视图未展示全部文档UNID问题咨询
Lotus Notes Select@All视图缺失文档排查方案
先排查视图本身配置问题
- 检查读者域过滤规则:如果文档的读者域(Readers字段)未包含当前查询身份,哪怕是数据库管理者,默认配置下
Select @All也不会展示对应文档。你可以在数据库ACL设置中为当前账号勾选「Full Access Administrator」权限,开启全文档访问权限后重新打开视图验证。 - 检查视图显示过滤配置:确认视图的「显示选项」未设置「仅显示未读文档」「仅显示指定分类文档」,也没有额外添加保存、修改时间范围的过滤规则,这类视图级显示规则会过滤符合
Select @All条件的文档。 - 强制重建视图索引:损坏的旧视图索引会导致统计异常,你可以在服务器控制台执行
Updall -r 数据库文件路径命令,强制重建视图的完整索引,完成后重新统计视图文档数量。
直接枚举全库文档定位缺失项
如果调整视图配置后仍然找不到缺失文档,可以通过脚本直接遍历全库文档定位:
- 运行以下LotusScript片段,对比全库文档和视图内文档的UNID,直接输出缺失文档的信息:
Dim session As New NotesSession Dim db As NotesDatabase Dim allDocs As NotesDocumentCollection Dim doc As NotesDocument Dim targetView As NotesView Dim viewUnidList List As Boolean Set db = session.CurrentDatabase ' 替换为你创建的UNID视图的实际名称 Set targetView = db.GetView("Your_UNID_View_Name") ' 提取视图内所有文档UNID存入列表 Set doc = targetView.GetFirstDocument While Not doc Is Nothing viewUnidList(doc.UniversalID) = True Set doc = targetView.GetNextDocument(doc) Wend ' 遍历全库文档找出不在视图中的项 Set allDocs = db.AllDocuments Set doc = allDocs.GetFirstDocument While Not doc Is Nothing If Not IsElement(viewUnidList(doc.UniversalID)) Then Messagebox "缺失文档UNID:" & doc.UniversalID & Chr(13) & "所属表单:" & doc.Form(0) End If Set doc = allDocs.GetNextDocument(doc) Wend
- 排查总文档数统计范围:你在数据库属性中看到的总文档数默认包含表单、视图、代理等设计元素,而
Select @All默认不会返回设计类文档。可以查看数据库属性「文档」选项卡中的「仅数据文档数」,确认统计基数是否匹配。 - 检查冲突文档过滤:部分视图默认会隐藏保存冲突文档,可以临时将视图选择公式修改为
SELECT @All | @DocConflict | @IsResponseDoc,刷新后查看是否出现缺失的2份文档。
内容的提问来源于stack exchange,提问作者keerthana
相关产品推荐
相关产品推荐

