如何实现单据保存时校验批号不允许录入前后空格
说明:
目前标准产品的单据如果是允许生成新的批号的,则批号字段的录入模式一般都是批号主档或文本,批号字段实际后台是有2个字段的,一个是FLot_Id,另一个是FLot_Text,此时界面录入的批号实际上是录入的FLot_Text的值,录入时对于前后空格没做强控,只是在保存到批号主档时去掉了后边的空格。现一些客户由某些业务要求批号录入时不允许携带前后空格。
下面以生产订单为例,保存操作增加python校验插件,实现保存时校验批号不允许携带前后空格。
步骤:
(下面以实现:生产订单保存时强制校验批号是否携带前后空格)
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)
实现效果:
如何实现单据保存时校验批号不允许录入前后空格
本文2024-09-23 03:21:46发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-158373.html