单据类型连动单选多类别基础资料列表Python表单插件原创
金蝶云社区-htv
htv
14人赞赏了该文章 116次浏览 未经作者许可,禁止转载编辑于2024年05月15日 14:44:42

以 其他应付单为例:

当选择单据类型的时候,往来单位类型自动按自己定义的规则进行切换,达到类似过滤的效果。

因为社区搜索不到 按单据类型实现对下拉列表的过滤,只好出此笨办法。

import clr
clr.AddReference("Kingdee.BOS")
from Kingdee.BOS import LocaleValue
from Kingdee.BOS.Core.Metadata import EnumItem
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import ComboFieldEditor
from System.Collections.Generic import *
from System import StringComparison

def AfterBindData(e):
    # 检查是否为新增操作
    if this.View.OpenParameter.Status == OperationStatus.ADDNEW:
        # 获取BillTypeID的ID属性
        bill_type_id = this.Model.GetValue("FBillTypeID")
        if bill_type_id is None:
            return;
        billtype_id=bill_type_id["ID"]
        array1 = [{"ID":"BD_Supplier","Name":"供应商"}, {"ID":"BD_Customer","Name":"客户"}, {"ID":"FIN_OTHERS","Name":"其它往来单位"}]
        array2 = [{"ID":"BD_Empinfo","Name":"员工"}, {"ID":"BD_Department","Name":"部门"}]
        
        array = array1 if bill_type_id["ID"] == "66441d3fe24bb4" else array2
        newList = List[EnumItem]()
        seq = 0
        for item in array:
            newItem = EnumItem()
            newItem.Seq = seq
            newItem.Value = item["ID"]
            # 创建LocaleValue时需要传入语言环境,这里假设UserLocale是有效的
            newItem.Caption = LocaleValue(item["Name"])
            newList.Add(newItem)
            seq += 1
        
        # 获取fieldEditor来设置下拉的选项列表
        fieldEditor = this.View.GetControl("FCONTACTUNITTYPE")
        if fieldEditor:
            fieldEditor.SetComboItems(newList)
        if bill_type_id["ID"] == "66441d3fe24bb4":   
            this.Model.SetValue("FCONTACTUNITTYPE","BD_Supplier")
        else:
            this.Model.SetValue("FCONTACTUNITTYPE","BD_Empinfo")


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