42.2、操作服务插件,校验器,OnAddValidators,单据头,必录原创
金蝶云社区-林荫大道cc身份
林荫大道cc
11人赞赏了该文章 11317次浏览 未经作者许可,禁止转载编辑于2020年07月12日 00:34:59
封面

业务场景:校验单据,采购订单,采购员,必须录入,否则不允许提交审核;


42.1



1、


        //OnAddValidators操作执行前,加载操作校验器
        public override void OnAddValidators(AddValidatorsEventArgs e)
        {
            base.OnAddValidators(e);
            TestValidator validator = new TestValidator();
            
            //是否需要校验,true需要
            validator.AlwaysValidate = true;
            
            //校验单据头FBillHead
            validator.EntityKey = "FBillHead";
            
            //加载校验器
            e.Validators.Add(validator);
        }


image.png



1.1、


//自定义校验器.派生:AbstractValidator
        private class TestValidator:AbstractValidator
        {
            //重写方法
            //数组ExtendedDataEntity,传递全部的信息
public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx)
            {   //for循环,读取数据
                foreach (ExtendedDataEntity obj in dataEntities)
                {   //采购员PurchaserId
                    object PurchaserId = obj.DataEntity["PurchaserId"];
                    //采购员是否为空
                    if(PurchaserId == null)
                    {   //报错
                        validateContext.AddError(obj.DataEntity,
                            new ValidationErrorInfo
                            ("PurchaserId",//出错的字段Key,可以空
                            obj.DataEntity["Id"].ToString(),// 出错的字段Key,可以空
                            obj.DataEntityIndex, // 出错的数据包在全部数据包中的顺序
                            obj.RowIndex,// 出错的数据行在全部数据行中的顺序,如果校验基于单据头,此为0
                            "001",//错误编码,可以任意设定一个字符,主要用于追查错误来源
                            "单据编号" + obj.BillNo + "采购订单没有录入采购员",//错误的详细提示信息 
                            "提交" + obj.BillNo,// 错误的简明提示信息
                            Kingdee.BOS.Core.Validation.ErrorLevel.Error// 错误级别:警告、错误...
                            ));   
                    }
                }
            }


image.png


2、注册插件


扩展采购订单,点编辑,批量编辑字段属性,操作列表,选择保存,编辑,其他控制,服务插件




3、最终效果,打开采购订单,没有填写采购员,报错


image.png



----------------------------------

4、保存取消插件,改成提交


image.png



5、列表也可以生效


image.png



和表单插件,列表插件的区别:

1、不是在前台校验,是发送到服务器端校验;

2、服务插件只需要写一次,列表插件和表单插件需要分别写;



总目录链接

https://vip.kingdee.com/article/64993872014591232


42.zip(58.18KB)

赞 11