如何移除标准产品操作上的校验?原创
金蝶云社区-快乐的八宝鱼
快乐的八宝鱼
9人赞赏了该文章 826次浏览 未经作者许可,禁止转载编辑于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
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!