二开-k3调用用户c#开发的功能原创
金蝶云社区-Robby
Robby
9人赞赏了该文章 670次浏览 未经作者许可,禁止转载编辑于2023年08月01日 14:10:04

参考文档https://vip.kingdee.com/link/s/lH2bu

先给K3添加一个住控台链接

适用版本Wise15.0. Wise15.1

image.png

image.png

创建一个vb工程userdllloader.

创建一个类Application,名称与插入的脚本中的fclassname匹配;

image.png引用kingdee k3base bridge interface 1.0组件;并再类中写下如上图代码;


subid请返回super,2开自己开发的功能不需要检查站点数;

callfunc中:

ffuncid是插入脚本中的fdetailfuncid;

K3ApsCshapProxy.proxyFactory对象是k3已存在的加载c#工程的代理;使用的是.net framework 2.0,因此要用k3已存在的代理对象,2开的工程必须是net framework 2.0开发的;否则无法加载;


Set dotNetDllProxy = CreateObject("K3ApsCshapProxy.ProxyFactory")            

If dotNetDllProxy Is Nothing Then                

Exit Sub            

End If            

dotNetDllProxy.AsmDllName = App.Path & "\UserCSharpPro.dll"  '组件所在的物理地址,把c#编译的组件放到k3erp目录下

dotNetDllProxy.AsmClassName = "UserCSharpPro.Class1"     ‘工程名.类名’       

dotNetDllProxy.LoadClass            

dotNetDllProxy.CallMothed "Show", Nothing     

'Show为class1中的一个public方法,show没有传参时,callmothed的第2个参数填nothing


建立一个C#工程UserCshapPro.dll;创建一个类Class1;(和与vb代码中的匹配)

image.png


工程引用k3erp目录下的2个组件:

image.png

kingdee.k3.aps.consolebse.dll,kingdee.k3.aps.dataaccess.dll;

class1必须继承iwiseconsole接口,sysnumber返回super;

如何和k3数据交互:

image.png

比如我在form1窗体的按钮下查询当前账套物料数量

image.png

accessfromcom是kingdee.k3.aps.dataaccess.dll类,用来和数据库交互;

可以用它的updateexecute方法执行更新、插入脚本;


完。

图标赞 9
9人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!