辅助资料扩展字段筛选二开使用案例原创
7人赞赏了该文章
637次浏览
编辑于2022年05月18日 11:06:52
一、【需求问题】
其它出库单:想针对其它出库的领用发生部门/成本中心和用途(辅助资料)进行归纳汇总;期望:当选择部门A时,用途中仅能选择部门A对应的用途;当选择部门B时,用途中仅能选择部门B对应的用途
二、【功能分析】
BOS中辅助资料字段,无法设置过滤,当前需求只能通过二开表单插件处理
【实现】
1、扩展辅助资料,添加基础资料字段,绑定"部门"
2、表单插件重写BeforeF7Select、BeforeSetItemValueByNumber事件,触发辅助资料查询时,加入部门的值,进行过滤辅助资料
3、注册表单插件
相关表
T_BAS_ASSISTANTDATA 辅助资料
T_BAS_ASSISTANTDATA_L 辅助资料多语言
T_BAS_ASSISTANTDATAENTRY 辅助资料分录
T_BAS_ASSISTANTDATAENTRY_L 辅助资料多语言
select * from T_BAS_ASSISTANTDATA where FID = '005056a3024ca51d11e428fb8c41a25d' --辅助资料 select * from T_BAS_ASSISTANTDATA_L where FNAME = '等级'--辅助资料多语言 select * from T_BAS_ASSISTANTDATAENTRY where FID = '005056a3024ca51d11e428fb8c41a25d'--辅助资料分录 select * from T_BAS_ASSISTANTDATAENTRY_L where FENTRYID in ('005056a3024ca51d11e428fbd7c96188', '005056a3024ca51d11e428fbdf11d074','005056a3024ca51d11e428fbecefddef','005056a3024ca51d11e428fbf3700759') --辅助资料多语言
#coding:utf-8 import clr clr.AddReference("System") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") from System import * from System import StringComparison from Kingdee.BOS.Core.DynamicForm import * from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import * def BeforeF7Select(e): if e.FieldKey.Equals("FClassAssistant", StringComparison.OrdinalIgnoreCase): depObj = this.View.Model.GetValue("FDeptId") if depObj is not None: # 通过"部门"过滤"辅助资料" e.ListFilterParameter.Filter = " FDeptId = " + str(depObj["Id"]) def BeforeSetItemValueByNumber(e): if e.BaseDataFieldKey.Equals("FClassAssistant", StringComparison.OrdinalIgnoreCase): depObj = this.View.Model.GetValue("FDeptId") if depObj is not None: # 通过"部门"过滤"辅助资料" e.Filter = " FDeptId = " + str(depObj["Id"])
1、未填写部门,显示全部辅助资料
2、按选择部门筛选
参考
其他出库单根据部门筛选辅助资料.rar(0.52KB)
推荐阅读