二开案例-【Python】实现校验生产订单行号重复不允许保存原创
5人赞赏了该文章
549次浏览
编辑于2022年05月31日 10:23:09
由于未知原因,客户生产订单数据会有部分行号重复的保存成功,造成下达时,后续成本归集数据异常,因此通过Python插件实现生产订单保存时,出现行号重复时,不允许保存。该Python插件注册在生产订单保存操作上,如图:
代码如下:
import clr clr.AddReference('System') clr.AddReference('System.Data') clr.AddReference('Kingdee.BOS') clr.AddReference('Kingdee.BOS.Core') from System import * from System.Data import * from System.Collections.Generic import List from Kingdee.BOS import * from Kingdee.BOS.Core import * from Kingdee.BOS.Log import * from Kingdee.BOS.Core.Validation import * def OnAddValidators(e): extMoProducTypeValidator=ExtMoProducTypeValidator() extMoProducTypeValidator.EntityKey="FBillHead" extMoProducTypeValidator.TimingPointString=",Save" e.Validators.Add(extMoProducTypeValidator) class ExtMoProducTypeValidator(AbstractValidator): def Validate(self,dataEntities,validateContext,ctx): for bill in dataEntities: billId=str(bill["Id"]); entryData=bill.DataEntity["TreeEntity"]; list1=[] for entryInfo in entryData: seq=entryInfo["Seq"]; if seq in list1: errorInfo=ValidationErrorInfo(" ",billId,bill.DataEntityIndex,bill.RowIndex,billId,"明细表体存在分录行号重复,不允许保存","",ErrorLevel.Error) validateContext.AddError(None,errorInfo) else: list1.append(seq);
推荐阅读