86 lines
3.3 KiB
C#
86 lines
3.3 KiB
C#
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// 错误级别:警告、错误...
|
||
));
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
}
|