辅助资料扩展字段筛选二开使用案例原创
金蝶云社区-邱育华
邱育华
8人赞赏了该文章 698次浏览 未经作者许可,禁止转载编辑于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、未填写部门,显示全部辅助资料

image.png


2、按选择部门筛选

image.png


参考


图标赞 8
8人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!