【HR产品】showForm打开单据F7列表,列表不受标品控权问题解决原创
金蝶云社区-丁梦洋
丁梦洋
1人赞赏了该文章 376次浏览 未经作者许可,禁止转载编辑于2023年12月13日 14:16:32

问题描述

最近做HR项目遇到个问题,单据A绑定了业务对象维度映射,单据列表正常被控权(dataPermQFilters有值),但通过代码打开的F7列表没被控权(dataPermQFilters没值),代码如下:

ListShowParameter parameter = new ListShowParameter();
parameter.setFormId("bos_listf7");
parameter.setBillFormId("a2h6_test_bill");
parameter.setLookUp(true);
this.getView().showForm(parameter);

跟源码跟到kd.hr.hrcs.mservice.HRCSDataPermissionService#getDataRule方法时发现是因为isLookUp为true,就return不走权限了。。。

image.png

但是isLookUp必须为true才是隐藏工具栏的可选界面,不然就是单纯的展示列表了...


解决方案

isLookUp设置true,自己调getDataRule方法拿到QFilter传过去

ListShowParameter parameter = new ListShowParameter();
parameter.setFormId("bos_listf7");
parameter.setBillFormId("a2h6_test_bill");
parameter.setLookUp(true);
String bizAppId = ShowFormHelper.getBizAppId(this.getView().getFormShowParameter());
QFilter customResult = DispatchServiceHelper.invokeService("kd.hrmp.hrcs.servicehelper", "hrcs",
        "IHRCSDataPermissionService","getDataRule",
        new Object[]{RequestContext.get().getCurrUserId(), bizAppId, "a2h6_test_bill", PermissionStatus.View, null});
if (Objects.nonNull(customResult)){
    parameter.getListFilterParameter().setFilter(customResult);
}
this.getView().showForm(parameter);


赞 1