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

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

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

【应用场景】

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

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

【应用场景】BOS平台内置了大量的标准操作,由于BOSIDE未做限制,任何操作都可以绑定校验器,但却不是任何操作都能执行校验器。只有那些穿...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息