电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

在插件中实现自定义下推

来源:金蝶云社区作者:金蝶2024-09-235

在插件中实现自定义下推

说明:

自定义下推就是在插件中调用下推接口,得到转换结果,并对转换结果进行处理的过程,主要包括:

 1.下推接口参数的构建,包括转换规则,下推数据,是否整单下推,目标单据权限,源单内码,目标单据类型,目标主组织等。       

 2. 得到转换结果,怎样去处理转换结果,是弹出下游单据页面还是直接保存等


代码:

1. 在表单插件中通过菜单点击事件实现单据下推示例

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Core.Const;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs;
using Kingdee.BOS.Core.Metadata.ConvertElement;
using Kingdee.BOS.Core.DynamicForm.Operation;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Interaction;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS.Core.Metadata.FieldElement;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
namespace Kingdee.BOS.TestPlugIn.Demo
{
    [HotUpdate]
    [Description("自定义下推单据")]
    public class CustomPushPlugIn : AbstractDynamicFormPlugIn
    {
        //菜单点击事件
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            if (e.BarItemKey.EqualsIgnoreCase("FBtnCustomPush"))
            {
                OperateOption pushOption = OperateOption.Create();//操作选项
                var pushArgs = this.CreatePushArgs(pushOption); //构建下推参数
                var convertResult = ConvertServiceHelper.Push(this.Context, pushArgs, pushOption);//调用下推接口
                var targetObjs = (from p in convertResult.TargetDataEntities select p.DataEntity).ToArray();//得到目标单据数据包
                var targetBInfo = this.GetBusinessInfo(pushArgs.ConvertRule.TargetFormId, pushArgs.ConvertRule.TargetFormMetadata);
                //对转换结果进行处理
                //1. 直接调用保存接口,对数据进行保存
                this.SaveTargetBill(targetBInfo, targetObjs);
                //2. 或者展示目标单据
                this.ShowTargetForm(targetBInfo, targetObjs);
            }
        }
        /// <summary>
        /// 保存目标单据
        /// </summary>
        private void SaveTargetBill(BusinessInfo targetBusinessInfo, DynamicObject[] targetBillObjs)
        {
            OperateOption saveOption = OperateOption.Create();
            saveOption.SetIgnoreWarning(true);
            saveOption.SetIgnoreInteractionFlag(true);
            var saveResult = BusinessDataServiceHelper.Save(this.Model.Context, targetBusinessInfo, targetBillObjs, saveOption);
            if (!saveResult.IsSuccess)
            {
                var errorInfo = string.Join(";", saveResult.ValidationErrors.Select(x => x.Message));
                this.View.ShowErrMessage(errorInfo);
                return;
            }
            else
            {
                this.View.ShowMessage("生成成功");
            }
        }
         /// <summary>
        /// 创建下推参数
        /// </summary>
        /// <returns></returns>
        private PushArgs CreatePushArgs(OperateOption pushOption)
        {
            //得到转换规则
            var convertRule = this.GetConvertRule();
            //源单数据
            var selectedRow = this.GetSelectedRow(pushOption);
            //单据下推参数
            PushArgs pushArgs = new PushArgs(convertRule, selectedRow);
            //目标单据主组织,可选参数,基础资料隔离,给没有住组织的目标数据包赋值,取当前登录组织即可
            pushArgs.TargetOrgId = this.Context.CurrentOrganizationInfo.ID;
            //目标单据类型,必填参数,除非下游单据类型不是必填的,对源单数据进行过滤,给目标单赋值
            pushArgs.TargetBillTypeId = "目标单据类型内码";
            return pushArgs;
        }
         /// <summary>
        /// 展示目标单据
        /// </summary>
        private void ShowTargetForm(BusinessInfo targetBusinessInfo, DynamicObject[] targetBillObjs)
        {
            BillShowParameter param = new BillShowParameter();
            param.ParentPageId = this.View.PageId;
            if (targetBillObjs.Length == 1)
            {
                param.Status = OperationStatus.ADDNEW;
                param.CreateFrom = CreateFrom.Push;
                param.AllowNavigation = false;
                string sessionKey = FormConst.ConvParamKey_OneResultSessionKey;// "_ConvertSessionKey";
                string sessionName = FormConst.ConvParamKey_OneResultSessionName;// "ConverOneResult";
                param.CustomParams.Add(sessionKey, sessionName);
                this.View.Session[sessionName] = targetBillObjs[0];       // 把结果放在交换区,供子页面取用
                param.FormId = targetBusinessInfo.GetForm().Id; //formID
 

在插件中实现自定义下推

说明:自定义下推就是在插件中调用下推接口,得到转换结果,并对转换结果进行处理的过程,主要包括: 1.下推接口参数的构建,包括转换规则...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信