using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Kingdee.BOS; using Kingdee.BOS.Core; //服务端 using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; //校验器 using Kingdee.BOS.Core.Validation; using System.ComponentModel; namespace aoyuPlugIn { [Description("校验器")] [Kingdee.BOS.Util.HotUpdate] //继承操作服务插件 public class OnAddValidatorsHead:AbstractOperationServicePlugIn { //OnPreparePropertys 数据加载前,确保需要的属性被加载 //因为需要读取采购员信息,先必须加载 public override void OnPreparePropertys(PreparePropertysEventArgs e) { base.OnPreparePropertys(e); //采购员FPurchaserId e.FieldKeys.Add("FPurchaserId"); //单据编号FBillNo e.FieldKeys.Add("FBillNo"); //加载复选框 F_PAEZ_CheckBox e.FieldKeys.Add("F_PAEZ_CheckBox"); } //OnAddValidators操作执行前,加载操作校验器 public override void OnAddValidators(AddValidatorsEventArgs e) { base.OnAddValidators(e); TestValidator validator = new TestValidator(); //是否需要校验,true需要 validator.AlwaysValidate = true; //校验单据头FBillHead validator.EntityKey = "FBillHead"; //校验单据体FPOOrderEntry validator.EntityKey = "FPOOrderEntry"; //加载校验器 e.Validators.Add(validator); } //自定义校验器.派生:AbstractValidator private class TestValidator:AbstractValidator { //重写方法 //数组ExtendedDataEntity,传递全部的信息 public override void Validate(ExtendedDataEntity[] dataEntities, ValidateContext validateContext, Context ctx) { //for循环,读取数据 foreach (ExtendedDataEntity obj in dataEntities) { //判断复选框是否勾选 if (!(bool)obj.DataEntity["F_PAEZ_CheckBox"]) { //报错 validateContext.AddError(obj.DataEntity, new ValidationErrorInfo ("",//出错的字段Key,可以空 obj.DataEntity["Id"].ToString(),// 数据包内码,必填,后续操作会据此内码避开此数据包 obj.DataEntityIndex, // 出错的数据包在全部数据包中的顺序 obj.RowIndex,// 出错的数据行在全部数据行中的顺序,如果校验基于单据头,此为0 "001",//错误编码,可以任意设定一个字符,主要用于追查错误来源 "单据编号" + obj.BillNo + "第" + obj.RowIndex + "行没有选择复选框",// 错误的详细提示信息 "审核:" + obj.BillNo,// 错误的简明提示信息 ErrorLevel.Error// 错误级别:警告、错误... )); } } } } } }