辅助属性只能录入数字类型原创
金蝶云社区-RSi
RSi
8人赞赏了该文章 76次浏览 未经作者许可,禁止转载编辑于2024年12月19日 10:41:57

客户需要设置长, 宽,高三个数字类型的辅助属性, 但系统中数据类型只允许字符, 虽然数据类型有数字,但该字段是锁定状态,也不让扩展辅助属性。只能在前台对录入字符进行校验,确保录入的是数字。

image.png

下面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 。

image.png

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