需求
物料 F7选择要求显示可用库存量,不能影响物料标品的 F7。
思路
利用 ListShowParameter.addCustPlugin() 动态添加 F7列表插件,不影响标品 F7
创建空白基础资料页面用于 F7 列表显示自定义列
重写 F7 列表 ListDataProvider 实现关联查询
实现步骤
创建空白基础资料页面
表单添加物料字段( F7 替换哪个基础资料字段就添加哪个,这样列表可以利用引用属性显示原基础资料的字段)
按需添加需要显示的自定义列
列表界面按需添加字段,基础资料 F7列表默认显示的就是列表的字段。
编写单据表单插件
物料字段注册 BeforeF7SelectListener
替换 F7 对应的实体标识,showParameter.setBillFormId("soi_bd_f7_custom");//新建的空白基础资料
注册 F7 列表页面的插件,干预 F7 查询数据,showParameter.addCustPlugin(F7FormPlugin.class.getName());
编写 F7 列表插件
重写 ListDataProvider 干预查询数据
编写 F7 ListDataProvider
重写 getData() 方法。按照需求查询 DataSet 。需要注意 DataSet 一定要有 id 字段,并且和原基础资料(物料) id 保持一致。
使用平台方法将 DataSet 转为 DynamicObjectCollection 。
QueryBuilder 因为平台原因,不能使用 ListDataProvider.getQueryBuilder() 。因为是自定义ListDataProvider 会导致 QueryBuilder.getReturnEntityType() 不正确。
效果图
开发环境版本
v5.0,v6.0
注意事项
QueryBuilder(v5.0) | QueryBuilder(v6.0) |
![]() | ![]() |
参考资料
推荐阅读