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

【应用场景】
BOS平台内置了大量的标准操作,由于BOSIDE未做限制,任何操作都可以绑定校验器,但却不是任何操作都能执行校验器。只有那些穿透到App层的操作才会默认执行操作的校验器,例如:保存、提交、撤销、审核、反审核、删除、空操作等。而诸如前一、后一、新增、复制、选单、下推等仅在Web层转悠的操作,并不会执行操作的校验器。
此时,可以通过表单插件的BeforeDoOperation事件,强行调用操作的校验器。
【案例演示】
采购订单,下推操作,绑定校验器,通过表单插件执行校验器。

【实现步骤】
<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 (e.Operation.FormOperation.OperationId == 52)
//if (e.Operation.FormOperation.Operation == "Push")
{
// 仅针对下推操作执行校验器
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;
}
}
/// <summary>
/// 格式化校验信息
/// </s
二开案例.单据插件.执行操作的校验器
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



