自动登录后,实现自动打开某个单据的功能
10人赞赏了该文章
2,174次浏览
编辑于2018年05月21日 17:19:20
自动登录后,实现自动打开某个单据的功能(实在很多二开同学在问,利用周末的时间给大家制作一个Demo如下)
自动登录后,实现自动打开某个单据的功能(实在很多二开同学在问,利用周末的时间给大家制作一个Demo如下)(7.x方法的解决方案!【推荐】)
1、启动插件不需要写入isoKey(6.x的方法);
2、在主控插件已经支持直接取到数据(系统出厂主控);如果是二开主控,在AfterBindData事件中加入以下代码即可;
using Kingdee.BOS.Core;
this.View.OpenSpecFormsByStartArgs();
3、在具体打开的单据中, 通过下面代码即可取到所有参数;
using Kingdee.BOS.Authentication;
var args = this.View.OpenParameter.GetCustomParameter(FormConst.StartAppArgs) as StartAppHomePageArgs;
(下面代码适合6.x, 7.x也可用)
1,在启动自动登陆插件文章的第六部分的代码里面的DoLoginCore(context, ret, pluginLoginInfo);方法调用完成后,编写如下代码,写入客制化参数:
(下面代码仅适合6.x,对于7.x不需要写这段代码)
//隔离参数键值
if (!string.IsNullOrWhiteSpace(ret.SessionId))
{
var isoKey = ret.SessionId + "_AutoLoginArgs";
//登陆成功后,加入自定义参数
HttpContext.Current.Application.Set(isoKey, "PUR_PurchaseOrder|100001");
}
复制代码
2,用BOSIDE打开【主控台经典版】BOS_MainConsoleSutra,做扩展后保存,如下图片操作:
3,在扩展后的【主控台经典版】BOS_MainConsoleSutra注册下面新建的二开插件:
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Metadata;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
namespace Kingdee.BOS.Test.PlugIn.Basic
{
public class Ext_HomePagePlugin : AbstractDynamicFormPlugIn
{
public override void AfterBindData(EventArgs e)
{
base.AfterBindData(e);
//隔离参数键值
var isoKey = this.Context.SessionId + "_AutoLoginArgs";
//获取客制化参数
var cargs = HttpContext.Current.Application.Get(isoKey) as string;
//清理Session
HttpContext.Current.Application.Remove(isoKey);
if (!string.IsNullOrWhiteSpace(cargs) && cargs.IndexOf('|') > 0)
{
var tmp = cargs.Split('|');
string pageId = Guid.NewGuid().ToString();
// 显示单据, 使用 BillShowParameter
var showParam = new BillShowParameter()
{
FormId = tmp[0],
PageId = pageId,
Status = OperationStatus.EDIT
};
showParam.OpenStyle.ShowType = ShowType.MainNewTabPage;
showParam.OpenStyle.ShowType = ShowType.MainNewTabPage;
showParam.OpenStyle.TagetKey = "FMAINTAB";
// 传入需要单据内码
showParam.PKey = tmp[1];
this.View.ShowForm(showParam);
// 显示单据列表, 使用 ListShowParameter
var showListParam = new ListShowParameter()
{
FormId = tmp[0],
PageId = Guid.NewGuid().ToString()
};
showListParam.OpenStyle.ShowType = ShowType.MainNewTabPage;
showListParam.OpenStyle.ShowType = ShowType.MainNewTabPage;
showListParam.OpenStyle.TagetKey = "FMAINTAB";
this.View.ShowForm(showListParam);
}
// 显示动态表单, 使用 DynamicFormShowParameter
var showDyParam = new DynamicFormShowParameter()
{
FormId = "PUR_USERORDERPARAM",
PageId = Guid.NewGuid().ToString()
};
showDyParam.OpenStyle.ShowType = ShowType.MainNewTabPage;
showDyParam.OpenStyle.ShowType = ShowType.MainNewTabPage;
showDyParam.OpenStyle.TagetKey = "FMAINTAB";
this.View.ShowForm(showDyParam);
}
}
}
4,测试自动登陆后完美自动打开采购订单,如下图,自动登录后没有做任何操作的状态如下图:
普通表单
表单列表界面
动态表单界面
赞 10
10人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *
10金币20金币30金币40金币50金币60金币
可用金币: 0