插件实现审核后自动下推

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

插件实现审核后自动下推

1 . 新建服务器插件,集成AbstractOperationServicePlugIn,重写AfterExecuteOperationTransaction事件 ``` public override void AfterExecuteOperationTransaction(AfterExecuteOperationTransaction e) { base.AfterExecuteOperationTransaction(e); if (this.OperationResult.IsSuccess && this.OperationResult.OperateResult != null && this.OperationResult.OperateResult.Count > 0) { //自动下推处理 } } ``` 2 . 自动下推 ``` // 获取源单与目标单直接的转换规则,如果规则未启用,则返回为空,注意容错 // 假设:上游单据FormId为sourceFormId,下游单据FormId为targetFormId var rules = ConvertServiceHelper.GetConvertRules(this.Context, sourceFormId, targetFormId); if (rules == null || rules.Count == 0) { //throw new KDBusinessException("", string.Format("未找到{0}到{1}之间,启用的转换规则,无法自动下推!", sourceFormId, targetFormId)); } // 取勾选了默认选项的规则 var rule = rules.FirstOrDefault(t => t.IsDefault); // 如果无默认规则,则取第一个 if (rule == null) { rule = rules[0]; } // 开始构建下推参数: // 待下推的源单数据行 var sourceBillMeta = MetaDataServiceHelper.Load(this.Context, sourceFormId) as FormMetadata; // 获取单据提的属性名称 var entityPropertyName = ResearchFundCommonFunc.GetEntryName(sourceBillMeta.BusinessInfo, KEY_FENTITY); List<ListSelectedRow> srcSelectedRows = new List<ListSelectedRow>(); // 把待下推的源单内码,逐个创建ListSelectedRow对象,添加到集合中 //srcSelectedRows.Add(new ListSelectedRow(billId.ToString(), string.Empty, 0, sourceFormId)); // 特别说明:上述代码,是整单下推; // 如果需要指定待下推的单据体行,请参照下句代码,在ListSelectedRow中,指定EntryEntityKey以及EntryId //查询构造下推数据 var entryEntityData = sourceBillData[entityPropertyName] as DynamicObjectCollection; foreach (var row in entryEntityData) { string entityId = Convert.ToString(row[0]); if (entityId == "0") continue; srcSelectedRows.Add(new ListSelectedRow(Convert.ToString(sourceBillData["Id"]), entityId, 0, sourceFormId) { EntryEntityKey = KEY_FENTITY }); } DrawArgs dArg = new DrawArgs(rule, null, srcSelectedRows.ToArray()); ConvertOperationResult operationResult = null; // 自定义参数字典:把一些自定义参数,传递到转换插件中;转换插件再根据这些参数,进行特定处理 Dictionary<string, object> custParams = new Dictionary<string, object>(); try { // 组装下推参数对象 var pushArgs = new PushArgs(rule, srcSelectedRows.ToArray()) { TargetBillTypeId = "", // 请设定目标单据单据类型。如无单据类型,可以空字符 TargetOrgId = 0, // 请设定目标单据主业务组织。如无主业务组织,可以为0 CustomParams = custParams // 可以传递额外附加的参数给单据转换插件,如无此需求,可以忽略 }; // 调用下推服务,生成下游单据数据包 operationResult = ConvertServiceHelper.Push(this.Context, pushArgs, OperateOption.Create()); } catch (KDExceptionValidate ex) { if (ex.ValidateString == "不符合下推条件") { //**捕捉因为不符合自动下推条件而报的错误,后续捕捉判断并忽略** throw new KDBusinessException("", "不符合下推条件"); } else { throw new KDBusinessException("", ex.Message + "\r\n" + ex.ValidateString); } } catch (KDException ex) { throw new KDBusinessException("", ex.Message + "\r\n" + ex.StackTrace); } catch { throw; } // 开始处理下推结果: // 获取下推生成的下游单据数据包 DynamicObject[] targetBillObjs = (from p in operationResult.TargetDataEntities select p.DataEntity).ToArray(); if (targetBillObjs.Length == 0) { // 未下推成功目标单,抛出错误,中断审核 //throw new KDBusinessException("", string.Format("由{0}自动下推{1},没有成功生成数据包,自动下推失败!", sourceFormId, targetFormId)); } // 对下游单据数据包,进行适当的修订,以避免关键字段为空,自动保存失败 // 示例代码略 // 读取目标单据元数据 var targetBillMeta = MetaDataServiceHelper.Load(this.Context, targetFormId) as FormMetadata; // 构建保存操作参数:设置操作选项值,忽略交互提示 OperateOption saveOption = OperateOption.Create(); // 忽略全部需要交互性质的提示,直接保存; //saveOption.SetIgnoreWarning(true); // 忽略交互提示 //saveOption.SetInteractionFlag(this.Option.GetInteractionFlag()); // 如果有交互,传入用户选择的交互结果 // using Kingdee.BOS.Core.Interaction; //saveOption.SetIgnoreInteractionFlag(this.Option.GetIgnoreInteractionFlag()); // 调用保存服务,自动保存 var saveResult = BusinessDataServiceHelper.Save(this.Context, targetBillMeta.BusinessInfo, targetBillObjs, saveOption, "Save"); ```

严重性 代码 说明 项目 文件 禁止显示状态

错误 CS0103 当前上下文中不存在名称“KEY_FENTITY” QZH.ghy.BOS.Business.PlugIn E:\code\QZH.ghy.BOS.Business.PlugIn\QZH.ghy.BOS.Business.PlugIn\QydSh.cs 61 活动

错误 CS0103 当前上下文中不存在名称“ResearchFundCommonFunc” QZH.ghy.BOS.Business.PlugIn E:\code\QZH.ghy.BOS.Business.PlugIn\QZH.ghy.BOS.Business.PlugIn\QydSh.cs 48 活动

错误 CS0103 当前上下文中不存在名称“KEY_FENTITY” QZH.ghy.BOS.Business.PlugIn E:\code\QZH.ghy.BOS.Business.PlugIn\QZH.ghy.BOS.Business.PlugIn\QydSh.cs 48 活动

错误 CS0103 当前上下文中不存在名称“sourceBillData” QZH.ghy.BOS.Business.PlugIn E:\code\QZH.ghy.BOS.Business.PlugIn\QZH.ghy.BOS.Business.PlugIn\QydSh.cs 56 活动

错误 CS0103 当前上下文中不存在名称“sourceBillData” QZH.ghy.BOS.Business.PlugIn E:\code\QZH.ghy.BOS.Business.PlugIn\QZH.ghy.BOS.Business.PlugIn\QydSh.cs 61 活动



跑不了



能贴一下引用dll出来吗?

插件实现审核后自动下推

1 . 新建服务器插件,集成AbstractOperationServicePlugIn,重写AfterExecuteOperationTransaction事件``` public override void Aft...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息