如何移除标准产品操作上的校验?原创
金蝶云社区-快乐的八宝鱼
快乐的八宝鱼
9人赞赏了该文章 697次浏览 未经作者许可,禁止转载编辑于2022年09月02日 09:49:18
封面

针对部分客户业务逻辑有不少二开希望移除标准操作上一些通过代码编写的校验器,提供以下方法(下面以物料保存校验为例)

准备工作:需要反编译标准产品保存操作,查看保存操作里面添加的校验器,如图:

image.png

编写操作插件,代码如下:

using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using Kingdee.BOS.Util;
using Kingdee.K3.Core.MFG.EntityHelper;
using Kingdee.K3.Core.BD.Const;
using Kingdee.BOS;
using Kingdee.BOS.App.Data;

namespace Kingdee.K3.BD.App.Common.ServicePlugIn.Material
{
    [Description("移除标准校验器插件")]
    public class SaveByDz : AbstractOperationServicePlugIn
    {

        public override void OnAddValidators(BOS.Core.DynamicForm.PlugIn.Args.AddValidatorsEventArgs e)
        {
            base.OnAddValidators(e);
            if (!e.Validators.IsEmpty())
            {
                var validator = e.Validators.Where(w => w is Kingdee.K3.BD.App.Common.ServicePlugIn.Material.Validator.AuxPtyValidator).FirstOrDefault();
                if (!validator.IsNullOrEmpty())
                {
                    e.Validators.Remove(validator);
                }
              
            }
        }
}



注意:标准产品的校验也不是随便就移除,需要根据业务规则进行操作。

Python写法:

clr.AddReference('Kingdee.BOS')
clr.AddReference('Kingdee.BOS.Core')
from Kingdee.BOS import *
from Kingdee.BOS.Core import *

def OnAddValidators(e):
   vdts = e.Validators;
   vdt = list(filter(lambda x: x.__class__.__name__ == 'AuxPtyValidator', vdts));
   j=len(vdt);
   if (j> 0):
      for i in range(0,j):
         e.Validators.Remove(vdt[i]);
























赞 9