当前位置:文档之家› 基于VB的金蝶K3_BOS二次开发研究

基于VB的金蝶K3_BOS二次开发研究

基于VB的金蝶K3_BOS二次开发研究
基于VB的金蝶K3_BOS二次开发研究

1 概念介绍

VB 是Visual Basic 的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式的结构化高级程

序设计语言,可用于开发Windows 环境下的各类应用程序。它简单易学、效率高,且功能强大可以与Windows 专业开发工具SDK 相

媲美。在Visual Basic 环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows 内部的广泛应用程序接口

(API )函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发Windows 环境下

功能强大、图形界面丰富的应用软件系统。由于VB 是一个可视化的集成开发环境,使用其编写应用程序,不需要编写大量的代码

去描述界面元素的外观和位置,而只要把预先建立的对象添加到屏幕上即可,是完全按照面向对象的程序设计思想研制,采用图形

化的应用界面,集应用程序开发、测试、查错功能于一体的集成开发环境。

ERP——enterprise Resource Planning 企业资源计划,是指建立在信息技术基础上,以系统化的管理思想,为企业决策层及员工

提供决策运行手段的管理平台。ERP 软件系统是一种主要面向制造行业进行物质资源、资金资源和信息资源集成一体化管理的企

业信息管理系统。在企业中,一般的管理主要包括三方面的内容:生产控制(计划、制造)、物流管理(分销、采购、库存管理)和财务

管理(会计核算、财务管理)。这三大系统本身就是集成体,它们互相之间有相应的接口,能够很好的整合在一起来对企业进行管

理。另外,随着企业对人力资源管理重视的加强,已经有越来越多的ERP 厂商将人力资源管理纳入了ERP 系统的一个重要组成部

分,ERP 系统在企业中能否得到成功实施和有效应用,还取决于一个关键因素:ERP 系统的客户化和二次开发。因此,通过运用ERP

软件系统,企业能够利用计算机对企业的资金、货物、人员和信息等资源进行自动化管理,具有制造,办公操作,供应链管理,人力资

源管理,项目管理,财务与管理,客户服务,销售与市场营销以及个性化管理等商业功能。

ERP 二次开发是指建立在现有ERP 平台上,为满足客户个性化需求的而进行的再次开发。由于ERP 的实施企业所在的行业千

差万别,而且面对不同企业千差万别的具体情况和不同企业千变万化的特殊需求时,也不可能做到“以不变应万变”。此外,企业所

处的环境是不断变化的:企业的产品种类、产品所处生命周期的阶段、企业的计划模式、分销模式都不断在变化,企业不断地进行业

务流程的再造,企业的规模不断地缩小或扩展,等等。总之,企业的变化是绝对的。因此,为了提高ERP 系统的柔性和应变能力,

ERP 二次开发与个性化管理对于企业的ERP 成功实施起了决定性的作用。

2 金蝶BOS 二次开发简介

企业由于行业不同、规模不同,管理者的管理理念

不同,导致管理重点有差异,企业管理呈多样性,传统的

管理软件由于其设计水平有限,已很难满足用户的个性

化需求,而专项开发在时间上不可能适应企业管理的多

变性,完全通用化的软件又不能体现企业的个性化管

理。为了解决以上矛盾并从“尊重用户企业文化,彰显

个性管理”的角度出发,金蝶公司专门推出BOS 二次开

发平台,与金蝶ERP 管理软件系统一起打造企业的个性

化ERP ,实现企业的个性化管理。

金蝶BOS 二次开发平台按金蝶ERP 平台划分可分

为基于金蝶K3-BOS 的二次开发平台、基于金蝶

EAS-BOS 的二次开发平台、条码应用及二次开发平台、

独立外挂应用的开发和数据库设计和性能优化平台。

金蝶K3-BOS (Business Operation System ,业务操作图 1 金蝶K3-BOS 的系统构成图

3 基于VB 的金蝶K3-BOS 插件开发案例

金蝶K3-BOS 插件包括:客户端单据插件、客户端序时簿插件以及中间层插件。其中客户端单据插件可以自动进行单据维护界

面菜单定义、单据事件函数定义等;客户端序时簿插件可以自动进行序时簿菜单定义、序时簿事件函数定义等;而中间层插件可以

自动进行中间层保存前、保存后、删除前、删除后等的事件函数生成。

金蝶K3- BOS 插件开发向导主要用于为开发人员提供定制的代码生成方式,可以通过插件开发向导生成。

以下以实现生产通知单在单据上的货品代号发生改变或编辑时,在状态栏上动态显示该物料的“即时库存数量”和“预计完工

数量”的功能而进行的客户端单据插件过程来介绍基于VB 的金蝶K3-BOS 插件开发。

具体流程:

1) 首先需要创建一个金蝶K3-BOS 客户端事件插件(启动Microsoft Visual Basic 6.0 。

在出现的“New Project”对话框中选择“Ac?

tiveX DLL”);

2) 选择菜单“工程”—〉“引用”。在出现的“引用”对话框中,选择K3ClassEvents 和Kingdee Foundation Objects 1.0 这两项;

3)修改默认的新建工程名(为BOSPlugInsSample)和类模块名(为BOSPlugIns),保存工程。

4 )在BOSPlugIns.cls类模块的代码中写入如下的代码,这段代码中定义了一个名为m_BillInterface的BillEvent对象,来接受金

蝶K/3 BOS 的客户端单据事件。

Option Explicit

Private WithEventsm_BillInterface As K3ClassEvents.BillEvent '必须具有的声明, 以此来获得单据事件

'这个Public Sub 必须存在, 且必须如下格式, 请不要修改或删除

Public Sub Show(ByValoBillInterface As Object)

'这里获得了K/3 的单据对象. 共有26 个事件, 11 个属性和49 个方法可以使用

'具体的事件、属性、方法,可以通过VB IDE 的“Object Browser”工具,选择“K3ClassEvents”下的“BillEvent”察看

Set m_BillInterface = oBillInterface

End Sub

'这个Private Sub 必须存在, 且必须如下格式, 请不要

修改或删除

Private Sub Class_Terminate()

'释放K/3 的单据对象

Set m_BillInterface = Nothing

End Sub

5 )如图2 所示,可以通过选择对应的接口变量,在右边

选择这个接口暴露的事件,根据案例要求需要实现两个事

件:BeginEdit和Change。

6 )在Change 事件中加入对应的实现代码:图2 接口申明后将能获取对应的事件、方法和属性

'单据对象上的字段值发生改变时发生。

Private Sub m_BillInterface_Change(ByValdct As KFO.IDictionary, ByValdctFld As KFO.IDictionary, ByVal Col As Long, ByVal Row

As Long, Cancel As Boolean)

'Object :BillEvent对象的一个实例。

'Dct:KFO.Dictionary对象,返回发生改变的字段的模板的对象。

'dctFld:KFO.Dictionary对象,返回发生改变的字段的值的对象。

'Col :Long 类型。当字段位于单据体多分录上时,则返回当前光标所在的列。

'Row :Long 类型。当字段位于单据体多分录上时,则返回当前光标所在的行。

'Cancel :Boolean 类型.

On Error GoTo HERROR

If UCase(Dct("FKey")) = UCase("HPDH") Then

Dim dctTotal As KFO.Dictionary

With m_BillInterface

Set dctTotal = GetProdectedAmount(Val(dctFld("FFLD")))

Set .Data("page2").Item(Row)("Total") = dctTotal

m_BillInterface.SetStatus 2, " 即时库存数量: " &CStr(dctTotal("StockAmount")("FFLD")) & "; 预计完工数量: " &CStr(dct?

Total("ProductAmount")("FFLD"))

End With

End If

HERROR:

If Err.Number<> 0 Then

MsgBox MODNAME & "::Change" &vbCrLf&Err.Description, vbCritical& "金蝶提示"

End If

End Sub

7 )在BeginEdit事件中加入对应的实现代码:

'单据对象上的字段获得录入焦点时发生。

Private Sub m_BillInterface_BeginEdit(ByValdct As KFO.IDictionary, ByVal Col As Long, ByVal Row As Long)

'Object: BillEvent对象的一个实例?

'Dct: KFO.Dictionary对象,返回当前光标所在的字段的模板的对象。

'Col :Long 类型。当字段位于单据体多分录上时,则返回当前光标所在的列。

'Row :Long 类型。当字段位于单据体多分录上时,则返回当前光标所在的行。

Dim dctFld As KFO.Dictionary

On Error GoTo HERROR

If Row <= 0 Then Exit Sub

If Dct("FPage") <> 2 Then Exit Sub

'取物料的相关数量

With m_BillInterface

If .Data("Page2").Size >= Row Then

Set dctFld = .Data("page2").Item(Row).GetValue("Total", Nothing)

If Not dctFld Is Nothing Then

m_BillInterface.SetStatus 2, "即时库存数量: " &CStr(dctFld("StockAmount")("FFLD")) & "; 预计完工数量: " &CStr(dct?

Fld("ProductAmount")("FFLD"))

Else

Set dctFld = GetProdectedAmount(Val(m_BillInterface.GetFieldValue("hpdh", Row)))

Set .Data("page2").Item(Row)("Total") = dctFld

m_BillInterface.SetStatus 2, "即时库存数量: " &CStr(dctFld("StockAmount")("FFLD")) & "; 预计完工数量: " &CStr(dct?

Fld("ProductAmount")("FFLD"))

End If

End If

End With

HERROR:

If Err.Number<> 0 Then

MsgBox MODNAME & "::BeginEdit" &vb?

CrLf&Err.Description, vbCritical& "金蝶提示"

End If

End Sub

8)通过以上的代码编写,再回到BOS 平台进行打

包与部署,在部署后的新账套中还可以进行相应的功

能调整(如图3)。

4 结束语

通过以上以金蝶K3-BOS 的VB 插件二次案例,我

们体会到到ERP 二次开发的重要性,但不是要对原有图3 在部署后的新账套中可以进行功能调整

ERP 系统全功能进行对立式的修改,更不是对原系统

做“大手术”,而是紧密围绕着原系统的基本功能,充分利用ERP 系统提供的各种接口表,补充开发一些我们实际需要的功能。同

时,二次开发必须考虑系统兼容性和数据一致性。这些工作,不仅不是对原系统的“破坏”,恰恰相反,起到了一种对ERP 系统在实

际应用中“硬度”的调和与“润滑”。纵然ERP 二次开发那么重要,企业在实施ERP 与ERP 二次开发过程中,还是需要“冷静”面对,细心实施。在ERP 二次开发过程中,需要注意以下几个问题:

首先,在做重要开发前,必须做好系统备份;

其次,必须充分利用系统提供的冗余字段,来补充开发一些我们实际要用到的功能。或

者将我们原有的一些系统,通过开发后台

进程,与ERP 系统中的接口表进行数据交换,实现所谓的无缝连接(在开发过程中应特别注意的一点就是不要修改系统已占用字段);

再次,在实施ERP 二次开发前,应对系统作仔细分析和研究。国内外的ERP 系统都提供非常详尽的技术资料,应尽可能弄清所

用到的表之间的关联关系,同时改动工作必须首先在系统的测试环境中进行;

最后,在ERP 二次开发实施后,必须进行全系统的周密测试。ERP 一个最重要的特征就是系统的集成性,因此对任何一个数据

库表字段的使用,都可能会影响到系统的其他功能。不赞成对原系统模块界面进行任何改动。因为这种改动可能带来的后果难以

预料。做好开发后技术文档的整理与保管,防止日后系统升级对已完成开发的影响。

指标录入包括普通录入和快捷录入两种。大部分单位通过指标查询功能找到本单位的指标后,在指标界面进行该项指标数据

的录入工作。有些单位的数据录入量比较大,为这几个单位开发了数据快捷录入页面,各单位只要通过主页上自己单位的快捷录

入页面录入相关的责任和考核数据并保存即可。

3)指标数据采集

公司每月生产经营对标指标数据量很大,不能完全通过手工录入来完成,为此制作了数据导入接口,通过excel 导入大量统计系

统数据(此类指标占总指标的41% )。定制了指标数据模板,每月通过公司计划统计系统导出相应的数据到数据模板中,再导入本

系统中,提高工作效率和数据的准确性。

2.3 指标统计分析

1)指标统计

指标统计包括以下几部分内容:生产经营类指标汇总情况、生产经营类指标完成情况、对标指标三级分解统计、生产经营类完

成率统计、生产经营类指标填报情况统计。通过数据统计表、指标完成进度情况表和指标完成率走势统计图等方式展示出来。

2 )指标分析

指标分析功能主要包括指标的趋势图形分析和问题原因分析报告。

图形分析是针对一些与公司生产息息相关的指标做一些相关趋势图分析,包括原油加工量、乙烯产量、合成橡胶产量、合成氨

产量、催化剂产量、化工综合能耗和炼油综合能耗。

问题分析报告是由未完成指标的单位提报的指标分析报告,总结分析指标未完成原因及改进措施。

3 应用效果

系统上线以来,随着应用广度和深度的不断增加,对标管理的思想与理念深入贯彻到公司经营管理过程中,人人关心指标,人

人重视指标,公司生产管理水平显著提高。其应用效果主要表现在以下几个方面:1)以业务为驱动,将先进的管理思想通过信息技术广泛应用于生产经营中,建立了兰州石化特有的管理模式,有效地保证了

“对标管理”思想的贯彻与落实。

2 )通过数据搜索与分析的自动化,将管理人员从繁杂,琐碎的基础工作中解放出来,更多的进行优化分析与目标调整。

3)通过WEB 发布,加快信息共享,使各级管理人员能够快速、准确的掌握指标统计、分析、评价等数据,便于指标的监控与考核。

4 )通过业务数据的图形化,对指标进行综合对比展现,实现了生产情况的全面分析。

相关主题
文本预览
相关文档 最新文档