二开案例.单据插件.执行操作的校验器
【应用场景】
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>
/// 格式化校验信息
/// </summary>
/// <param name="result"></param>
/// <returns></returns>
private void GetFormatValidationInfo(IOperationResult result)
{
var collection = result.OperateResult;
foreach (var errorInfo in result.ValidationErrors)
{
var rs = new OperateResult
{
PKValue = errorInfo.BillPKID,
RowIndex = errorInfo.RowIndex,
Name = errorInfo.Title,
SuccessStatus = false,
Message = errorInfo.Message,
MessageType = errorInfo.Level == ErrorLevel.Warning ? MessageType.Warning : MessageType.FatalError
};
if (!collection.Contains(rs))
{
collection.Add(rs);
}
}
}
}
}
<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。
<3>BOSIDE扩展采购订单,下推操作新增校验器,注册表单插件,保存元数据,开发完毕。
【功能验证】
<1>登录业务站点,打开采购订单编辑界面,点击下推菜单,此时校验器生效了。
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.单据插件.执行操作的校验器
本文2024-09-23 04:18:57发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164520.html