如何实现单据保存时校验批号不允许录入前后空格

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何实现单据保存时校验批号不允许录入前后空格

说明:

  1. 目前标准产品的单据如果是允许生成新的批号的,则批号字段的录入模式一般都是批号主档或文本,批号字段实际后台是有2个字段的,一个是FLot_Id,另一个是FLot_Text,此时界面录入的批号实际上是录入的FLot_Text的值,录入时对于前后空格没做强控,只是在保存到批号主档时去掉了后边的空格。现一些客户由某些业务要求批号录入时不允许携带前后空格。

  2. 下面以生产订单为例,保存操作增加python校验插件,实现保存时校验批号不允许带前后空格。

步骤:

  1. (下面以实现:生产订单保存时强制校验批号是否携带前后空格)

  2. BOS设计器-生产订单-保存操作-其他控制页签的服务插件处注册python插件

上传图片

   3、示例代码如下:

import clr 

clr.AddReference("System") 

clr.AddReference('Kingdee.BOS') 

clr.AddReference('Kingdee.BOS.Core')


from Kingdee.BOS.Core import * 

from Kingdee.BOS.Core.Metadata.EntityElement import* 

from Kingdee.BOS.Core.Validation import* 

def OnPreparePropertys(e): 

    e.FieldKeys.Add("FLot") 

def OnAddValidators(e): 

    validator=ValidateSN() 

    validator.EntityKey="FBillHead" 

    validator.AlwaysValidate=True 

    e.Validators.Add(validator) 

class  ValidateSN(AbstractValidator): 

    def Validate(self,dataEntities,validateContext,ctx): 

        for bill in dataEntities:

            billEntrys=bill.DataEntity["TreeEntity"] 

            for entry in billEntrys: 

                mseq=(entry["Seq"]) 

                material=entry["MaterialId"] 

                stocdate = material["MaterialStock"][0] 

                lotm=stocdate["IsBatchManage"]

                if(lotm==True): 

                    lottext = entry["Lot_Text"]

                    if(len(lottext) > 0): 

                        if (len(lottext) != len(lottext.strip())):

                            msg="生产订单第"+str(mseq)+"行分录批号存在前后空格,不允许保存" 

                            billId=bill["Id"] 

                            info=ValidationErrorInfo("",str(billId),bill.DataEntityIndex,mseq,str(billId),msg,"",ErrorLevel.Error)

                            validateContext.AddError(None,info)

实现效果:

上传图片



如何实现单据保存时校验批号不允许录入前后空格

说明:目前标准产品的单据如果是允许生成新的批号的,则批号字段的录入模式一般都是批号主档或文本,批号字段实际后台是有2个字段的,一个...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息