三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》

摘要:
开发工具:Visual Studio 2012开发语言:Asp NetC#=============================================目录:1.向BOS文档添加按钮--2.向BOS文件添加字段--[实时库存]3.创建Visual C#类库。4.导入命名空间。5.编写按钮单击事件。建议使用没有任何代码的空白事件进行测试。6.编译代码以生成DLL文件。7.插件注册。8.IIS重新启动。9.代码调试以确保事件成功触发。10代码调试过程分析=============================================1.向BOS文档添加按钮--打开,右键单击,选择Extension,在窗口中单击,然后在文档标题中单击Add。标识符在插件代码中标识。

案例需求:在销售订单上新增一个按钮,在订单明细中新增一个字段,命名[即时库存]。

点击按钮,弹出“Hello World!”,并获取订单明细物料的即时库存,填入字段[即时库存]。

开发工具Visual Studio 2012

开发语言Asp.net C#

=================================

目录:

1、BOS单据加按钮 - -【测试按钮】

2、BOS单据加字段 - -[即时库存]

3、创建Visual C#类库

4、引入命名空间

5、编写按钮点击事件,建议用不带任何代码的空白事件进行测试

6、编译代码,生成DLL文件

7、插件注册

8、IIS重启

9、代码调试,确保事件是否成功触发

10、代码调试过程分析

=================================

1、BOS单据加按钮 - - 【测试按钮】

 打开【金蝶K3 Cloud BOS集成开发平台】,右键点击【销售订单】,选择扩展(在扩展/继承模板才可加字段),

在【销售订单属性】窗口,点击【菜单集合】,在单据头新增按钮【测试按钮】。

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第1张

在菜单编辑中,右键点击【工具条】,新增按钮【测试按钮】,标识为 “HelloWorld”。标识在插件代码中识别。

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第2张

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第3张

2、BOS单据加字段 - - [即时库存]

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第4张

3、创建Visual C#类库

打开Visual Studio 2012,在菜单【文件】 - - 【新建】,点击【项目】,新建Visual C# 类库。

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第5张

4、引入命名空间

 三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第6张

 三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第7张

5、编写按钮点击事件,建议用不带任何代码的空白事件

没有代码的空白事件如下,并设置断点调试:

 三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第8张

这是完全代码如下:

using System;
using System.Collections.Generic;
using System.Text;
using Kingdee.BOS.Core.Bill.PlugIn;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.Core.Metadata.EntityElement;
using Kingdee.BOS;
using Kingdee.K3.MFG.App;
using System.Data;

namespace MyTest.K3.FIN.SE.FirstPlugIn
{
    public class Class1:AbstractBillPlugIn
    {
        public override void BarItemClick(BarItemClickEventArgs e)
        {
            base.BarItemClick(e);
            if (e.BarItemKey == "HelloWorld")  --HelloWorld是测试按钮的标识
            {
                this.View.ShowMessage("Hello world!", MessageBoxType.Notice);

                decimal jskc; //及时库存量
                string FNumber;//物料代码
                string FBillNo = "";
                DynamicObject docSCDDIds1 = this.View.Model.DataObject;
                FBillNo = docSCDDIds1["Date"].ToString(); --单据头订单编号取值,BillNo是订单编号的标识,在BOS中查看
--获取单据体对象,并循环取单据体字段。FSaleOrderEntry是销售订单明细的单据体标识,在BOS中查看 EntryEntity entryEntity
= this.View.BusinessInfo.GetEntryEntity("FSaleOrderEntry"); DynamicObjectCollection docCGSQIds = this.View.Model.GetEntityDataObject(entryEntity); StringBuilder sb = new StringBuilder(); OrganizationInfo og = this.Context.CurrentOrganizationInfo;--取当前组织机构 for (int i = 0; i < docCGSQIds.Count; i++) { jskc = 0; FNumber = ""; //算出物料代码 sb.AppendLine("select FNumber from T_BD_Material "); sb.AppendLine("where (1=1) "); sb.AppendLine(string.Format("and FMaterialID={0}", docCGSQIds[i]["MaterialId_Id"])); FNumber = AppServiceContext.DbUtils.ExecuteScalar<string>(Context, sb.ToString(), "0", null); sb.Remove(0, sb.Length);//清空StringBuilder的方法 //更新及时库存,排除报废仓、不良品仓、默认库存状态:不良 sb.AppendLine("select isnull(SUM(t1.FBASEQTY),0) from T_STK_INVENTORY t1 "); sb.AppendLine("inner join t_BD_Material t2 on t1.FMaterialID=t2.FMaterialID "); sb.AppendLine("where (1=1) "); sb.AppendLine(string.Format("and t2.FNumber='{0}' and t1.FKEEPERID={1} ", FNumber, og.ID)); using (IDataReader dr = AppServiceContext.DbUtils.ExecuteReader(Context, sb.ToString())) { while (dr.Read()) { //entity.DataEntity["F_Dnk_JSKC"] = dr[0]; jskc = Convert.ToDecimal(dr[0]); } } sb.Remove(0, sb.Length);//清空StringBuilder的方法 this.View.Model.SetValue("F_Dnk_JSKC", jskc, i); --单据体即时库存赋值 } this.View.UpdateView("F_Dnk_JSKC"); } } } }

6、编译代码,生成DLL文件

右键点击【类库】,选择【属性】,在【生成】页签中,浏览DLL生成路径(安装根目录下):

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第9张

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第10张

DLL生成路径如下:C:Program Files (x86)KingdeeK3CloudWebSitein

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第11张

在解决方案,右键点击【生成解决方案】或【重新生成解决方案】,成功生成MyTest.K3.FIN.SE.FirstPlugIn.DLL

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第12张

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第13张

7、插件注册

在BOS开发平台,在销售订单属性中,点击【表单插件】。打开插件注册窗口,点击【注册】,浏览DLL。并启用DLL

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第14张

8、IIS重启

在操作系统的开始菜单,打开【运行】,输入cmd,打开DOS窗口,输入iisreset命令,重启IIS

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第15张

9、代码调试,确保事件是否成功触发

在代码窗口,点击菜单【调试】 - - 【附加到进程】,选择进程【w3p】,用户名为:NetWork Service

重点提示:每次代码修改,都要点击【重新生成解决方案】,重新生成DLL,并且IIS要重新重启,新的改动才生效,

调试也要重新附加进程,因为IIS重启后,进程ID变更了。

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第16张

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第17张

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第18张

打开K3 Cloud客户端,打开销售订单新增界面,点击【按钮测试】,触发代码调试

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第19张

代码调试,按F11逐语句调试。按F10逐过程调试。

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第20张

运行完代码后,弹出“Hello World!”消息框,并把值填入字段【即时库存】。

(由于是个人自己实战训练的帐套,没有维护物料和库存,故库存没有值)

三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第21张

10、代码调试分析

调试过程中,业务单据的所有的对象、变量和值,都可以在局部变量查看到

 三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》第22张

免责声明:文章转载自《三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇八叉树(Octree)D3.js 让图表动起来下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Node.js如何执行cmd

最近,由于业务需求,有必要研究如何根据vscode插件的名称下载相应的插件,以解决打包插件并将其上载到服务器所导致的延迟问题。灵感是件好事。本文主要讨论Node.js如何执行cmd。除了我一开始说的,还有很多应用场景,但只有意想不到的。正如我们的经理所说,现在20%的技术基本上可以解决80%的业务问题。在这个时代,技术有点泛滥,换句话说,技术过剩。...

Jboss

同时,为了扩大JBoss的企业市场,JBoss已经签署了许多渠道合作伙伴。2004年6月,JBoss宣布JBoss应用服务器已通过Sun公司的J2EE认证。这是JBoss应用服务器历史上最重要的里程碑。JBossAOP 1.0于2004年10月发布。这也证实了JBoss是一家创新型公司。JBoss应用服务器5.0于2008年12月6日正式发布。新版本的应用服...

Windows Server 2008 R2 备份与恢复详细实例

Windows ftp服务可以在百度内置,非常简单。)1.首先安装windows server 2008R2的备份功能。查找Windows的“服务器管理器”。下图显示了我的服务器的情况。双击它。备份完成后,我们卸载qq并删除磁盘F的数据。Linux服务器在没有密码的情况下构建Samba登录,并使用yum进行安装。...

centos登录密码正确但一直报login incorrect错误(错误赋予权限)

3、 若要修改文件权限,请在无法登录之前仔细调用操作。回想一下,您以前在Linux中遇到过由文件权限引起的问题。尝试检查系统日志/var/log/secure。...

oracle报ORA-08103: 对象不再存在错误

今天,在导入数据时,数据库多次抛出异常。最常见的原因是同时操作。有人截断了表,然后将其放入选择表中。在群里发布错误,有人立刻出来认出他,说他正在整理表格……如果不是因为这个原因,百度也给出了其他尝试的计划:再次执行;查询时添加架构。...

macOS添加/移除安全证书

1.添加证书在finder中搜索钥匙串,点击钥匙串进入到钥匙串访问页面点击左侧默认钥匙串的登录菜单,将要安装的证书拖入到右侧证书列表的空白区域刚拖入的证书logo右下角会有个,右键点击进入显示简介弹窗设置信任折叠列表中的使用此证书时为“始终信任”关闭显示简介弹窗时会要求输入电脑登录密码至此,如果证书logo右下角出现,则表示证书安装成功2.删除证书选中要删除...