背景说明
之前,我共享过一个帖子,介绍如何调用下推引擎,自动生成下游单据数据包,然后调用保存服务,保存下游单据。全程自动处理,无需用户干预。
现有伙伴咨询,如何把下推结果,不自动保存,而是显示出来,供用户修改,由用户自行保存。
本帖示例代码,封装了一个函数,演示在表单插件中,如何把下推生成的下游单据显示出来。(调用下推服务的代码,见我之前共享的帖子,本帖略过)
特别说明
本帖示例代码,只适用于Web层插件(包含单据插件、列表插件)。
App服务层的插件(如操作插件),无法与用户进行交互,不能显示出下游单据维护界面。
示例代码
//***************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using Kingdee.BOS;
using Kingdee.BOS.Util;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.DynamicForm.Operation;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Metadata;
namespace JDSample.FormPlugIn.Bill
{
[Description("显示下推的目标单编辑界面")]
public class S151106ShowPushResultEdit : AbstractBillPlugIn
{
/// <summary>
/// 显示下推的目标单编辑界面:调用下推服务的代码略
/// </summary>
/// <param name="targetFormId">下游单据FormId</param>
/// <param name="pushResult">下推服务返回的结果对象</param>
/// <param name="objs">下推生成的全部下游单据</param>
public void ShowPushResult(
string targetFormId,
ConvertOperationResult pushResult,
DynamicObject[] objs )
{
// 构建界面显示参数
BillShowParameter param = new BillShowParameter
{
ParentPageId = this.View.PageId
};
if (objs.Length == 1)
{
// 如果下推生成的目标单仅仅只有一张,则直接打开下游单据的编辑界面
param.FormId = targetFormId; // formId
param.Status = OperationStatus.ADDNEW; // 新建状态
param.CreateFrom = CreateFrom.Push; // 标志:下推创建的单据
param.AllowNavigation = false; // 不显示导航菜单
// 把下推结果放在缓存交换区
string customParamKey = "_ConvertSessionKey";
string sessionKey_Result = "ConverOneResult";
string sessionKey_ErrorInfo = "ConvertValidationInfo";
param.CustomParams.Add(customParamKey, sessionKey_Result);
this.View.Session[sessionKey_ErrorInfo] = pushResult.ValidationErrors;
this.View.Session[sessionKey_Result] = objs[0];
}
else if (objs.Length > 1)
{
// 如果下推生成的目标单有多行,则打开批量编辑界面
param.FormId = "BOS_ConvertResultForm";
// 把下推结果放在缓存交换区
string sessionKey_Result = "ConvertResults";
string sessionKey_ErrorInfo = "ConvertValidationInfo";
this.View.Session[sessionKey_Result] = objs;
this.View.Session[sessionKey_ErrorInfo] = pushResult.ValidationErrors;
param.CustomParams.Add("_ConvertResultFormId", targetFormId);
}
else
{
return;
}
// 显示界面
param.OpenStyle.ShowType = ShowType.MainNewTabPage;
this.View.ShowForm(param);
}
}
}
推荐阅读