二开案例.服务插件.操作执行后事物结束前修改单据数据包

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

二开案例.服务插件.操作执行后事物结束前修改单据数据包

【应用场景】在单据的某个操作执行后,且该操作的外围事务尚未结束前,修改单据的数据包并在当前事务保护下完成数据库操作。

【案例演示】采购订单执行审核操作后,将采购日期设置为审核日期。

【实现步骤】

<1>编写服务插件,代码如下。

using Kingdee.BOS.App.Core;

using Kingdee.BOS.Core.DynamicForm.PlugIn;

using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;

using Kingdee.BOS.Util;

using System.ComponentModel;


namespace Jac.XkDemo.BOS.App.PlugIn

{

    /// <summary>

    /// 【服务插件】操作执行后事物结束前修改单据数据包

    /// </summary>

    [HotUpdate]

    [Description("【服务插件】操作执行后事物结束前修改单据数据包")]

    public class UpdateFieldValueInTransactionOperationServicePlugIn : AbstractOperationServicePlugIn

    {

        /// <summary>

        /// 操作事物后事件(事务内触发

        /// </summary>

        /// <param name="e"></param>

        /// <remarks>

        /// 1. 此事件在操作执行代码之后,操作的内部逻辑已经执行完毕

        /// 2. 此事件在操作事务提交之前

        /// 3. 此事件中的数据库处理,受操作的事务保护

        /// 4. 通常此事件,可以用来做同步数据,如同步生成其他单据,而且需要受事务保护

        /// </remarks>

        public override void EndOperationTransaction(EndOperationTransactionArgs e)

        {

            base.EndOperationTransaction(e);

            // 保存8提交9审核1反审核26

            if (this.FormOperation.OperationId == 1)

            //if (this.FormOperation.Operation.EqualsIgnoreCase("Audit"))

            {

                foreach (var dataEntity in e.DataEntitys)

                {

                    // 审核后设置采购日期等于审核日期

                    dataEntity["Date"] = dataEntity["ApproveDate"];

                }

                // 保存变更后的数据

                new BusinessDataWriter(Context).Save(e.DataEntitys);

            }

        }

    }

}




/*

#【服务插件】【Python】【注意缩进】事物启动后操作执行后修改单据数据包

import clr

clr.AddReference('mscorlib')

clr.AddReference('Kingdee.BOS.App.Core')

from Kingdee.BOS.App.Core import *


def EndOperationTransaction(e):

    if this.FormOperation.OperationId == 1:

        for dataEntity in e.DataEntitys:

            #审核后设置采购日期等于审核日期

            dataEntity["Date"] = dataEntity["ApproveDate"];

        BusinessDataWriter(this.Context).Save(e.DataEntitys);

 */



<2>拷贝插件组件到应用站点的WebSite\Bin目录下,重启IIS。


<3>BOSIDE扩展采购订单,审核操作注册插件,操作后刷新字段增加【采购日期】字段,保存元数据,开发完毕。

如果使用Python插件,注册方式如下图。




现在可以登录业务站点,打开已有的采购订单,执行审核操作,检验插件的设置效果啦。
















【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696

二开案例.服务插件.操作执行后事物结束前修改单据数据包

【应用场景】在单据的某个操作执行后,且该操作的外围事务尚未结束前,修改单据的数据包并在当前事务保护下完成数据库操作。【案例演示】采...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息