辅助属性只能录入数字类型原创
8人赞赏了该文章
76次浏览
编辑于2024年12月19日 10:41:57
客户需要设置长, 宽,高三个数字类型的辅助属性, 但系统中数据类型只允许字符, 虽然数据类型有数字,但该字段是锁定状态,也不让扩展辅助属性。只能在前台对录入字符进行校验,确保录入的是数字。
下面python 的实现
import clr clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') from Kingdee.BOS.Core import * from Kingdee.BOS.Core.Metadata.FieldElement import * from System.Text.RegularExpressions import * #引用正则表达式 # 定义全局变量,默认长宽高为数字, 非数字时为False save = True #值更新 def DataChanged(e): if e.Field.Key.lower() == "FAuxPropId".lower(): checkAux(e.Row) #保存 def BeforeSave(e): global save count = this.View.Model.GetEntryRowCount("FPOOrderEntry") for row in range(count): checkAux(row) if not save: e.Cancel = True return def checkAux(row): global save fMaterial = this.View.Model.GetValue("FMaterialId", row) if fMaterial is None: return materialAuxPty = fMaterial["MaterialAuxPty"] # 物料辅助属性 for materialAux in materialAuxPty: if materialAux["IsEnable1"] == True: fauxid = materialAux["AuxPropertyId_Id"] # 从物料中获取辅助属性维度变量 fAuxPropId = this.View.Model.GetValue("FAuxPropId", row) # 获取界面上辅助属性 key = "F" + str(fauxid) fauxValue = str(fAuxPropId[key]) # 值为空, 跳过本次循环 if fauxValue is None or str(fauxValue).strip() == '' or fauxValue == 'None': continue # 匹配辅助属性值是否为数字 result = Regex.IsMatch(fauxValue, "^\d+(\.\d+)?$") if not result: row += 1 if key == 'F100001': this.View.ShowErrMessage("第{0}行, 长度非数字".format(row)) save = False #fAuxPropId[key]='' 设置辅助属性值 return if key == 'F100002': this.View.ShowErrMessage("第{0}行, 宽度非数字".format(row)) save = False # fAuxPropId[key]='' 设置辅助属性值 return if key == 'F100003': this.View.ShowErrMessage("第{0}行, 高度非数字".format(row)) save = False # fAuxPropId[key]='' 设置辅助属性值 return
获取辅助属性维度标识, 这里长,宽,高, 分别为 FF100001, FF100002, FF100003 。
赞 8
8人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读