背景:s-HR产品从8.5开始,对基础资料进行了集团化管控改造,query和eas的query有原始区别,导致在GUI的一些界面上使用报错,如:预警\编码规则等
现象:F7过滤的name属性应该是BaseInfo.name,直接解析成name了
xecute query error: com.kingdee.bos.BOSException: Can't found propertyUnit: [name] in [com.kingdee.shr.base.syssetting.app.BaseItemRelHRCustom]!, query : com.kingdee.eas.hr.emp.emp_page.app.WorkplaceQuery, view : WHERE name = 'xxx'
原因是GUI的F7控件,对query元数据有严格要求,要求query必须包含三列:id,number,name
而s-HR基础资料里面没有number,name两个字段
同时预警这边还存在一个解析错误,目前引擎没解决
com.kingdee.bos.dao.InvalidDAOMetaDataException: com.kingdee.shr.base.syssetting.app.BaseItemRelationHR not define table
com.kingdee.shr.base.syssetting.app.BaseItemRelationHR是一个抽象基类,预警这边应该需要解析出来,抽象基类实体不会有表的
碰上这类s-HR的集团管控基础资料,又需要在GUI上使用的,不会太多,建议自行在DEP新建query元数据来解决;
步奏如下:
1、找到对应基础资料所在dep的方案,将方案反启用
2、开始新建query,如果是DEP建的基础资料,按下图方式直接去建即可;如果是标准产品的实体需要建,可以找一个基础资料常用的方案去建
这里需要设置query元数据的包路径和名称
点击下一步后选择query的实体对象,这里通过实体名称过滤出来
完成后,会出现在业务数据源树上,双击进行编辑,如果要关联其他表,可以通过下图方式去增加关联
配置字段,基础资料的默认配置三个就行,id,name,number
配置完的结果
设置主键,这个一定要设置
完成后通过sql查看,可以将sql复制到查询分析器验证正确性
3、实体扩展属性修改,defaultF7Query扩展属性改成新的query
4、启动dep对应方案,去预警那边使用该query就好了
推荐阅读