当前位置:文档之家› 金蝶二次开发 K3插件开发 指导手册(初稿)

金蝶二次开发 K3插件开发 指导手册(初稿)

金蝶 K/3 BOS V10.1插件开发指导手册金蝶软件(中国)有限公司2004.9目录打个小广告:金蝶二次开发技术交流QQ群①群 30121062 已满②群 28307002 未满③群待定大家共同学习共同进步1开发基础 (3)1.1插件开发概念 (3)1.2插件开发配置 (3)2开发指南 (4)2.1创建一个金蝶K/3 BOS 插件 (4)2.1.1创建一个金蝶K/3 BOS 客户端事件插件 (4)2.1.2创建一个金蝶K/3 BOS 中间层事件插件 (9)2.2自定义金蝶K/3 BOS 标准菜单、工具栏 (11)2.3添加新的菜单、工具栏 (12)2.4添加新的事件、方法 (12)2.5访问中间层和数据库 (12)2.6保存数据 (13)3参考 (13)3.1客户端插件事件、方法、属性 (13)3.2中间层插件事件 (13)3.3判断业务对象引用存储过程 (13)3.4金蝶K/3 BOS数据库结构 (13)4示例 (13)4.1XXX (13)1开发基础1.1插件开发概念金蝶K/3运行平台为金蝶K/3 BOS开发的业务单据提供了稳定、标准的运行环境,但为了实现客户更加个性化的需求和保持金蝶K/3 BOS架构的开放性,还为客户化开发提供了插件编程机制:通过金蝶K/3 BOS业务单据和序时簿事件代理组件,把业务单据处理的关键事件接口抛出,客户可以接收这个事件代理组件,并对组件的抛出事件编程,从而实现个性化的事件处理方法,对金蝶K/3 BOS运行平台进行有效的扩充和扩展。

需要注意的是:a) 当前版本的金蝶K/3 BOS支持的插件,仅应用在金蝶K/3的GUI版本,不支持WEB版本;b) 当前版本的金蝶K/3 BOS支持采用Microsoft Visual Basic 编写的插件,采用的类型推荐为ActiveX DLL 类型;c) 当前版本的金蝶K/3 BOS支持的插件分为客户端事件插件、中间层事件插件;在本手册中,我们所有关于金蝶K/3 BOS插件的定义、描述、示例等,都符合上述3点特征。

1.2插件开发配置开发、调试金蝶K/3 BOS插件,需要安装:a) 金蝶K/3 客户端部件b) 金蝶K/3 BOSc) Microsoft Visual Basic(推荐使用v6.0 版本,并且安装SP5)另外,如果要通过插件在K/3 BOS标准单据、序时簿界面上增加菜单、工具条,还需要安装:d) Data Dynamics ActiveBar ActiveX v1.0.6.5同时,我们推荐:a) 采用Microsoft Windows 2000 Server(及以上版本)等Server类操作系统作为开发、调试操作系统;b) 在该操作系统上安装Microsoft SQL Server 2000数据库;c) 在该操作系统上安装金蝶K/3 客户端部件、金蝶K/3 中间层部件、金蝶K/3BOS;这样,我们就可以同时开发、调试金蝶K/3 BOS客户端事件插件和金蝶K/3 BOS中间层插件了。

2开发指南2.1创建一个金蝶K/3 BOS 插件在安装、配置完1.2 要求的环境后,我们就可以开始创建一个金蝶K/3 BOS插件了。

2.1.1创建一个金蝶K/3 BOS 客户端事件插件要创建一个金蝶K/3 BOS 客户端事件插件,请按照以下步骤操作:1) 启动Microsoft Visual Basic 6.0。

2) 在出现的“New Project”对话框中选择“ActiveX DLL”。

3) 选择菜单“Project”—〉“References”。

4) 在出现的“References”对话框中,选择下述2项:●K3ClassEvents●Kingdee Foundation Objects 1.0如果没有在这个列表中没有找到上述2项,可以点击对话框上的“Browse”按键,在出现的打开文件对话框中分别选择本机上的●K3ClassEvents.dll●Kfo10.dll这2个DLL文件即可(一般在金蝶K/3 客户端部件的安装目录中可以找到)。

5) 重新命名工程及类模块名称,保存工程。

例如将默认的新建工程名和类模块名改为下图所示。

6) 在BOSPlugIns.cls类模块的代码中写入如下的代码。

Option ExplicitPrivate WithEvents m_BillInterface As K3ClassEvents.BillEvent '必须具有的声明, 以此来获得单据事件'这个 Public Sub 必须存在, 且必须如下格式, 请不要修改或删除Public Sub Show(ByVal oBillInterface As Object)'这里获得了K/3的单据对象. 共有 26 个事件, 11 个属性和 49 个方法可以使用'具体的事件、属性、方法,可以通过 VB IDE 的“Object Browser”工具,选'择“K3ClassEvents”下的“BillEvent”察看Set m_BillInterface = oBillInterfaceEnd Sub'这个 Private Sub 必须存在, 且必须如下格式, 请不要修改或删除Private Sub Class_Terminate()'释放K/3的单据对象Set m_BillInterface = NothingEnd SubCode 1: 客户端单据事件插件连接代码在上面的代码中,我们定义了一个名为m_BillInterface的BillEvent对象,来接受金蝶K/3 BOS 的客户端单据事件。

在BOSPlugIns.cls类模块的代码中写入如下的代码则可以接受金蝶K/3 BOS的客户端序时薄事件。

Option ExplicitPrivate WithEvents m_ListInterface As K3ClassEvents.ListEvents '必须具有的声明, 以此来获得序时薄事件'这个 Public Sub 必须存在, 且必须如下格式, 请不要修改或删除Public Sub Show(ByVal oListInterface As Object)'这里获得了K/3的序时薄对象. 共有 8 个事件, 5 个属性和 15 个方法可以使用'具体的事件、属性、方法,可以通过 VB IDE 的“Object Browser”工具,选'择“K3ClassEvents”下的“ListEvents”察看Set m_ListInterface = oListInterfaceEnd Sub'这个 Private Sub 必须存在, 且必须如下格式, 请不要修改或删除Private Sub Class_Terminate()'释放K/3的序时薄对象Set m_ListInterface = NothingEnd SubCode 2: 客户端序时薄事件插件连接代码如果希望在一个插件中同时可以处理客户端单据事件和序时薄事件,可以通过在工程中添加1个类模块,如下图所示,分别在2个类模块中添加上述2段代码。

这样就可以利用1个类来处理客户端单据事件,用另1个类来处理客户端序时薄事件了。

7) 编译工程。

8) 在金蝶K/3 BOS中设置插件。

如下图所示:上图所示的是步骤6中的同时可以处理单据事件和序时薄事件的插件的设置。

以上步骤完成后,我们就建立了一个金蝶K/3 BOS 客户端事件(包括单据事件和序时薄事件)插件。

虽然我们在这个例子中没有进行任何额外的单据事件和序时薄事件操作,但经过设置后,实际上已经在使用了这个插件的单据、序时薄中调用了这个插件。

我们现在需要做的,只是在这个插件中,利用获得的单据、序时薄对象,实现我们希望的具体操作了。

2.1.2创建一个金蝶K/3 BOS 中间层事件插件要创建一个金蝶K/3 BOS 中间层事件插件,请按照以下步骤操作:1) 执行“2.1.1创建一个金蝶K/3 BOS 客户端事件插件”中的步骤1至步骤5。

唯一不同的是在步骤4中,只需要添加Kingdee Foundation Objects 1.0的引用。

2) 在BOSPlugIns.cls类模块的代码中写入如下的代码。

Option Explicit'/********************************************************************/'/*描述:单据保存后扩展处理方法'/*备注:可以将该单触发器处理的过程在此函数中处理'/********************************************************************/Public Function BeforeSave(ByVal sDsn As String, _ByVal dctClassType As KFO.Dictionary, _ByVal vctClassTypeEntry As KFO.Vector, _ByVal dctTableInfo As KFO.Dictionary, _ByVal dctData As KFO.Dictionary, _ByVal dctLink As KFO.Dictionary)Debug.Print "当前资料被保存前扩展处理方法"End Function'/********************************************************************/ '/*描述:单据删除前扩展处理方法'/********************************************************************/ Public Function BeforeDel(ByVal sDsn As String, _ByVal nClassID As Long, _ByVal dctClassType As KFO.Dictionary, _ByVal nInterID As Long)Debug.Print "当前资料被删除前扩展处理方法"End Function'/********************************************************************/ '/*描述:单据保存后扩展处理方法'/*备注:可以将该单触发器处理的过程在此函数中处理'/********************************************************************/ Public Function AfterSave(ByVal sDsn As String, _ByVal dctClassType As KFO.Dictionary, _ByVal vctClassTypeEntry As KFO.Vector, _ByVal dctTableInfo As KFO.Dictionary, _ByVal dctData As KFO.Dictionary, _ByVal dctLink As KFO.Dictionary)Debug.Print "当前资料被保存后扩展处理方法"End Function'/********************************************************************/ '/*描述:单据删除后扩展处理方法'/********************************************************************/ Public Function AfterDel(ByVal sDsn As String, _ByVal nClassID As Long, _ByVal dctClassType As KFO.Dictionary, _ByVal nInterID As Long)Debug.Print "当前资料被删除后扩展处理方法"End FunctionCode 3: 中间层事件插件连接代码在上面的代码中,我们可以看到,不同于金蝶K/3 BOS 的客户端事件插件的处理,在金蝶K/3 BOS中间层事件插件中,我们只需要实现这4个标准事件就可以了。

相关主题