【Python表单插件】单据体的分数根据基础资料中的范围,给状态赋值原创
金蝶云社区-软件园猫猫侠
软件园猫猫侠
12人赞赏了该文章 78次浏览 未经作者许可,禁止转载编辑于2024年05月08日 17:04:17

场景:二开单据《客户评审报告》,单据体存放各个客户的评分情况,根据总分判断在哪个区间,更新状态;

如果分数区间和状态对应不变,就不用写插件了,直接在BOS里配置。考虑到区间可能后期会改动,方便客户自己维护,所以画了个基础资料给客户自己定区间。

image.png

image.png

注册一个表单插件image.png

代码如下(如有缩进问题请下载附件查看)

import clr
clr.AddReference('System')
clr.AddReference('Kingdee.BOS.Core')
clr.AddReference('Kingdee.BOS.App')
from System import*
from Kingdee.BOS.Core.DynamicForm import *
from Kingdee.BOS.App.Data import *

def DataChanged(e):
    if e.Key == "F_YGCM_Integer_ne1" : #总分的标识
        hh = this.View.Model.GetEntryCurrentRowIndex("FEntity");  # 获取单据体当前焦点行号
        if hh >= 0:
            fs = this.View.Model.GetValue("F_YGCM_Integer_ne1", hh); #获取该行的总分
            #this.View.ShowMessage(baseObj.ToString());#显示正常提示信息
            sql ='''/*dialect*/ SELECT t2.FNAME FROM YGCM_t_Cust100026 t1 left join YGCM_t_Cust100026_L t2 on t1.fid=t2.fid WHERE {0} between F_YGCM_INTEGER_IMU and F_YGCM_INTEGER_1XJ'''.format(fs);
            t= DBUtils.ExecuteScalar(this.Context,sql,None);
            #this.View.ShowMessage(t);
            this.Model.SetValue("F_YGCM_TEXT_QTR",t,hh);#获取到的基础资料的[状态]赋值给单据的[状态]

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

sql简单说明一下:

SELECT t2.FNAME --状态(我录在了基础资料的名称上,所以取的FNAME,如果你是其他字段就换成你的字段名)

FROM 表名 t1 --这张基础资料的表名

left join 中文表 t2 --这张基础资料的中文表

on t1.fid=t2.fid 

WHERE {0} between XXX and XXX -- {0}就是上面获取到的总分,XXX换成你的数据范围


插件.rar(0.61KB)

赞 12