F7 扩展开发:关联查询和显示自定义列原创
金蝶云社区-周立思
周立思
2人赞赏了该文章 314次浏览 未经作者许可,禁止转载编辑于2024年01月29日 16:45:06

需求

物料 F7选择要求显示可用库存量,不能影响物料标品的 F7。


思路

  1. 利用 ListShowParameter.addCustPlugin() 动态添加 F7列表插件,不影响标品 F7

  2. 创建空白基础资料页面用于 F7 列表显示自定义列

  3. 重写 F7 列表 ListDataProvider 实现关联查询


实现步骤

创建空白基础资料页面

表单添加物料字段( F7 替换哪个基础资料字段就添加哪个,这样列表可以利用引用属性显示原基础资料的字段)

按需添加需要显示的自定义列

image.png


列表界面按需添加字段,基础资料 F7列表默认显示的就是列表的字段。

image.png


编写单据表单插件

物料字段注册 BeforeF7SelectListener

image.png

替换 F7 对应的实体标识,showParameter.setBillFormId("soi_bd_f7_custom");//新建的空白基础资料

注册 F7 列表页面的插件,干预 F7 查询数据,showParameter.addCustPlugin(F7FormPlugin.class.getName());

image.png

编写 F7 列表插件

重写 ListDataProvider 干预查询数据

image.png


编写 F7 ListDataProvider 

重写 getData() 方法。按照需求查询 DataSet 。需要注意 DataSet 一定要有 id 字段,并且和原基础资料(物料) id 保持一致。

使用平台方法将 DataSet 转为 DynamicObjectCollection 。

QueryBuilder 因为平台原因,不能使用 ListDataProvider.getQueryBuilder() 。因为是自定义ListDataProvider 会导致 QueryBuilder.getReturnEntityType() 不正确。

image.png


效果图

image.png


开发环境版本

v5.0,v6.0


注意事项

QueryBuilder(v5.0)QueryBuilder(v6.0)
image.pngimage.png

参考资料


赞 2