【Python表单插件】单据体的分数根据基础资料中的范围,给状态赋值
场景:二开单据《客户评审报告》,单据体存放各个客户的评分情况,根据总分判断在哪个区间,更新状态;
如果分数区间和状态对应不变,就不用写插件了,直接在BOS里配置。考虑到区间可能后期会改动,方便客户自己维护,所以画了个基础资料给客户自己定区间。
注册一个表单插件
代码如下(如有缩进问题请下载附件查看)
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换成你的数据范围
【Python表单插件】单据体的分数根据基础资料中的范围,给状态赋值
本文2024-09-16 17:11:07发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-14078.html