- 背景:我创建了一个 :单据(业务单据模板)导入物料信息,对物料进行进行批量修改
- 发布类型:列表
- 批改是在存储过程中进行的,传入参数就是用户在界面选择的单据id(允许多选)
- 这个是一个服务插件,注册在审核按钮中
- 操作列表-->操作名称:审核-->编辑-->其他控制-->服务插件-->注册
using Kingdee.BOS;
using Kingdee.BOS.App.Data;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using System;
using System.Collections.Generic;
namespace PiGaiCanKaoChengBen
{
[System.ComponentModel.Description("批改参考成本")]
public class PiGaiCanKaoChengBenServicePlugin : AbstractOperationServicePlugIn
{
public override void OnPreparePropertys(PreparePropertysEventArgs e)
{
base.OnPreparePropertys(e);
}
/// <summary>
/// 操作执行后,事务结束前
/// </summary>
/// <param name="e"></param>
/// <remarks>
/// 1. 此事件在操作执行代码之后,操作的内部逻辑已经执行完毕
/// 2. 此事件在操作事务提交之前
/// 3. 此事件中的数据库处理,受操作的事务保护
/// 4. 通常此事件,可以用来做同步数据,如同步生成其他单据,而且需要受事务保护
/// </remarks>
public override void EndOperationTransaction(EndOperationTransactionArgs e)
{
List<int> listIds = new List<int>();
foreach (DynamicObject entity in e.DataEntitys)
{
if (entity != null)
{
int id = Convert.ToInt32(entity["Id"]);
listIds.Add(id);
}
}
string ids = string.Join(",", listIds);
List<SqlParam> paramList = new List<SqlParam>
{
new SqlParam("Ids", KDDbType.String, ids)
};
string sql = "AC_Proc_UpdateWuLiaoXinXi";
DBUtils.ExecuteStoreProcedure(Context, sql, paramList);
//Exception exception = new Exception(ids + sql);
//throw exception;
}
}
}