博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
三、K3 Cloud 开发插件《K3 Cloud插件开发新手指导 + K3 Cloud插件开发代码调试》
阅读量:4337 次
发布时间:2019-06-07

本文共 4346 字,大约阅读时间需要 14 分钟。

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

点击按钮,弹出“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集成开发平台】,右键点击【销售订单】,选择扩展(在扩展/继承模板才可加字段),

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

 

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

 

 

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

 

3、创建Visual C#类库

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

 

4、引入命名空间

 

 

 

 

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

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

 

 

这是完全代码如下:

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
(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生成路径(安装根目录下):

 

 

DLL生成路径如下:C:\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin

 

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

 

 

7、插件注册

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

 

8、IIS重启

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

 

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

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

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

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

 

 

 

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

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

 

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

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

 

10、代码调试分析

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

 

转载于:https://www.cnblogs.com/star-studio/p/7966903.html

你可能感兴趣的文章
P1313 计算系数
查看>>
NSString的长度比较方法(一)
查看>>
Azure云服务托管恶意软件
查看>>
My安卓知识6--关于把项目从androidstudio工程转成eclipse工程并导成jar包
查看>>
旧的起点(开园说明)
查看>>
生产订单“生产线别”带入生产入库单
查看>>
crontab导致磁盘空间满问题的解决
查看>>
java基础 第十一章(多态、抽象类、接口、包装类、String)
查看>>
Hadoop 服务器配置的副本数量 管不了客户端
查看>>
欧建新之死
查看>>
自定义滚动条
查看>>
APP开发手记01(app与web的困惑)
查看>>
笛卡尔遗传规划Cartesian Genetic Programming (CGP)简单理解(1)
查看>>
mysql 日期时间运算函数(转)
查看>>
初识前端作业1
查看>>
ffmpeg格式转换命令
查看>>
万方数据知识平台 TFHpple +Xpath解析
查看>>
Hive实现oracle的Minus函数
查看>>
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>