电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

Python动态构建下拉列表-年份动态下拉选择

来源:金蝶云社区作者:金蝶2024-09-163

Python动态构建下拉列表-年份动态下拉选择

今天分享一下如何用Python脚本动态构建下拉列表选项,简单实用!

这里以年份为例,当我们需要在简单账表过滤框或者单据里面录入年份时,通常只能用整数字段或者文本字段,因为时间在流动,年份无法枚举出来,但是年份是有规律的,所以我们可以写一个Python脚本动态构建年份选项,一劳永逸!


一、单据/简单账表过滤框构建年份下拉字段

C#插件可以参考:https://wenku.my7c.com/article/137250328441093888?productLineId=1

  1. 首先在单据上添加一个【下拉列表】,不用设置枚举类型,字段标识为:F_ora_Year。

  2. 在表单插件中注册如下Python脚本构建年份的下拉选项,参考代码如下:

----------------------------------------------------------------------------------------------------------------------------

#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
clr.AddReference('Kingdee.BOS.ServiceHelper')
#导入cloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
from Kingdee.BOS import *
from Kingdee.BOS.Core import *
from Kingdee.BOS.Core.Bill import *
from Kingdee.BOS.Core.Metadata import * 
from Kingdee.BOS.Core.DynamicForm.PlugIn import *
from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
from System import *
from System.Data import *
from Kingdee.BOS.App.Data import *
from System.Collections.Generic import List
from Kingdee.BOS.ServiceHelper import *


def AfterBindData(e):
    year=str(DateTime.Now.Year);#当前年份
    lastYear=str(DateTime.Now.Year-1);#上年
    #这里演示:动态显示今年和上年,如果有其他需求,可以自行修改
    #注意!通常还需要获取所有历史单据中出现过的年份,都要添加进去。

    #写一个select distinct查询就行了,将查询结果构建进去,不复杂 。

    #否则,打开历史单据时,没有构建到下拉选项的年份将显示成空白。

    enumList=List[EnumItem]();
    enumItem = EnumItem();
    enumItem.Caption=LocaleValue(year,2052);
    enumItem.EnumId=year;

#这里可以这是下拉选项的有效性,true表示禁用    enumItem.Invalid=False;

#例如,2019年有单据,那么打开2019年的单据需要正常显示,所以就需要构建2019这个选项。

#但是新录入单据时,不再,允许选择2019了,就需要构建2019,但是要把2019设置成禁用。
    enumItem.Value=year;
    enumList.Add(enumItem);
    enumItem = EnumItem();
    enumItem.Caption=LocaleValue(lastYear,2052);#下拉选项显示标题
    enumItem.EnumId=lastYear;#下拉选项值,记录到数据库
    enumItem.Invalid=False;
    enumItem.Value=lastYear;
    enumList.Add(enumItem);
    comboList = this.View.GetFieldEditor[ComboFieldEditor]("F_ora_Year"0);
    if (comboList <> None):
        comboList.SetComboItems(enumList);
    if(this.View.OpenParameter.Status == OperationStatus.ADDNEW):
        this.View.Model.SetValue("F_ora_Year", year, 0);#如果单据打开为新增,设置年份默认值为当前年份


二、单据列表根据动态下拉字段过滤时,也要需要动态构建选项,否则将无法正常使用此字段过滤

这个步骤应用于在单据中自己构建了动态下拉字段的时候使用,如果仅仅是简单账表过滤,则不需要!

注意:这里是用来设置单据列表下拉字段过滤功能正常使用,所以构建的下拉选项一定是历史单据都用到过的选项值。

参考学习:列表过滤窗【条件】页签动态设置下拉选项C#插件

按照以上知识教程处理之后,只能在过滤弹窗里面使用这个下拉字段过滤,在快捷过滤还不能正常使用。

经过研究,可以通过列表插件完成,条件过滤框和快捷过滤都可以生效列表插件Python脚本参考如下:

----------------------------------------------------------------------------------------------------------------------------

#引入clr运行库
import clr
#添加对cloud插件开发的常用组件的引用
clr.AddReference('System')
clr.AddReference('System.Data')
clr.AddReference('Kingdee

Python动态构建下拉列表-年份动态下拉选择

今天分享一下如何用Python脚本动态构建下拉列表选项,简单实用!这里以年份为例,当我们需要在简单账表过滤框或者单据里面录入年份时,通常...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信