二开案例.单据插件.执行操作的校验器

【应用场景】
BOS平台提供了大量的内置操作,由于BOSIDE未做限制,理论上任何操作上都可以挂校验器。但是仅有那些穿透到App层的操作才会默认执行操作上的校验器,例如:保存、提交、撤销、审核、反审核、删除、空操作等;而类似前一、后一、新增、复制、选单、下推等仅在Web层转悠的操作,并不会调用操作上的校验器,导致您即使配了校验器,运行时也不会有任何效果。
通过表单插件,可以强行执行绑定在操作上的校验器。
【案例演示】
采购订单,下推操作,绑定校验器,在操作前执行校验器。

【实现步骤】
<1>编写单据插件,代码如下。
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Validation;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using System.ComponentModel;
namespace Jac.XkDemo.BOS.Business.PlugIn
{
/// <summary>
/// 【单据插件】执行操作的校验器
/// </summary>
[Description("【单据插件】执行操作的校验器"), HotUpdate]
public class ExecuteOperationValidatorsBillPlugIn : AbstractBillPlugIn
{
public override void BeforeDoOperation(BeforeDoOperationEventArgs e)
{
base.BeforeDoOperation(e);
if (this.View is IBillView)
{
var result = BusinessDataServiceHelper.Validate(
this.View.Context,
this.View.BusinessInfo,
new[] { this.Model.DataObject },
e.Operation.FormOperation.Operation,
Enum_TimingPoint.Other,
e.Option);
if (!result.IsSuccess)
{
e.Cancel = true;
GetFormatValidationInfo(result);
this.View.ShowOperateResult(result.OperateResult);
}
return;
}
if (this.View is IListView)
{
// TODO
}
}
/// <summary>
/// 格式化校验信息
/// </summary>
/
二开案例.单据插件.执行操作的校验器
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



