单据列表数据不显示的一种排查方案
1 问题描述
单据列表(或者基础资料列表),数据不显示或者只显示了一部分。例如下图:
2 原因分析
列表看不到数据,有以下几种原因造成:
过滤面板,过滤条件有默认值,在打开单据列表页面时,按照默认过滤项进行过滤
插件代码设置了过滤条件
单据设计器中,设置了权限控制类型为“组织”,在打开单据列表页面时,会按主业务组织隔离数据
配置了数据规则权限
配置了特殊数据权限
3 排查方法
(1)浏览器按F12,打开浏览器开发者工具,切换到network页签,同时打开单据列表页面,找到带有ac=loadData的请求。如下图
(2)拖动到最底部,找到Traceid,复制这个Traceid
(3)在monitor里面,用刚刚复制的Traceid,查找日志。并且通过关键字“beforeSetFilter”或者“afterSetFilter”过滤日志。
beforeSetFilter如下图:
afterSetFilter如下图:
(4)该日志会显示出单据列表的各个过滤条件。beforeSetFilter的具体过滤项如下:
MainOrgQFilter:按主业务组织隔离数据
SpecialDataPermQFilter:特殊数据权限
DataPermQFilters:数据规则权限
ClientQueryFilterParameter:过滤面板上,常用过滤和过滤方案的过滤项
myQFilters:常用过滤,过滤方案,快速过滤,左树过滤,ListShowParameter中传递过来的QFilter
注意:用getView().showForm()打开列表页面时需要构建ListShowParameter对象,或者在beforeF7Select等事件中可以获取到ListShowParameter对象,然后可以给ListShowParameter对象添加QFilter。
(5)afterSetFilter中,多了以下几个过滤项:
CustomQFilters:使用代码,使用addCustomQFilter方法设置的单据列表的qfilter。关于addCustomQFilter,请参考文章。
BasedataCoreQFilters:当前列表的业务对象是基础资料,并且设置了自定义控制器(也叫“个性化控制器”)才会触发。关于如何设置自定义控制器,请参考文章。
OrderBy:列表排序
(6)当单据列表看不到数据时,我们可以按照上述过滤项,逐个进行排查。例如,上述案例中,特殊数据权限配置了number = '02',只展示编码为 '02'的数据,而没有一行单据能满足该过滤项,导致单据列表看不到任何数据。
单据列表数据不显示的一种排查方案
本文2024-09-23 00:19:41发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-138765.html