K3BOS开发流程及接口介绍
金蝶K3 BOS数据交换平台详细教程

版权声明
本书著作权属于金蝶软件(中国)有限公司所有,在未经本公司许可的情况下,任何单 位或个人不得以任何方式对本书的部分或全部内容擅自进行增删,改编,节录,翻译,翻印, 改写。
金蝶软件(中国)有限公司 2009 年 1 月
前言
感谢您使用《金蝶 K/3 V12.0 BOS 用户手册》。
5. 现场支持服务
我们的资深专业人员面对面地和您沟通,在运行现场对问题进行研究分析,使问 题迅速得到解决。
6. CRM 服务
借助客户关系管理系统(金蝶 EAS-CRM)我们建立了客户综合信息管理库,能够 快速地解决客户的问题并保留历史记录,以便提供长期、持续、高效的服务。
7. CSP 服务支持
金蝶公司融合多年客户服务经验与国外先进的管理思想,提炼出客户常用的和最 需要的服务为一体的 CSP 服务。它是以金蝶公司先进的科技手段和专业化的服务队伍 为依托,在业界领先推出的项目完整、功能全面的系统性服务产品。
第 3 章 单据引入引出 .....................................................................................................................21 3.1 单据引出 ............................................................................................................................21 3.2 单据引入 ............................................................................................................................23 3.3 单据引出并引入到账套 ....................................................................................................23
第一节 K3 BOS 概述

适应企业发展 控制投资成本
4
K/3 BOS平台——技术架构 平台——技术架构 平台
5
K/3 BOS平台——模型驱动 平台——模型 模型驱动 平台
业务抽象 并建模
实现了从辅助资料、基础资料、单据、 实现了从辅助资料、基础资料、单据、单据之间的信息流 单据到报表, 转,单据到报表,单据到凭证整套业务及流程定义 单据、序事簿、报表、 单据、序事簿、报表、权限的一体化设计 所有的业务对象元数据具有自描述功能, 所有的业务对象元数据具有自描述功能,支持系统的平滑 升级 基于模型驱动架构, 基于模型驱动架构,元数据驱动系统流程和控制业务逻辑 业务对象动态建模
7
联络与交流
休息&交流 休息&
8
谢
谢!
9
单据A 单据
单据流程定义 复制已有单据模版
单据B 单据
单据B1 单据 单据B2 单据
在原有基础上 重做一张个性 化的单据
单据流程定义
业 务 定 义
创建一个 新的单据
单据流程定义
单据C 单据
业务配置
修改一些 参数
单据D 单据
ቤተ መጻሕፍቲ ባይዱ
3
单据D 单据
K/3 BOS平台——快速构建 BOS平台 平台——快速构建
快速构建满足客户个性化 快速构建满足客户个性化需要 客户个性化需要 快速构建满足客户发展变化 快速构建满足客户发展变化需要 客户发展变化需要 客户集成应用需要 快速构建满足客户集成应用 快速构建满足客户集成应用需要 快速构建满足客户低维护成本 快速构建满足客户低维护成本需要 客户低维护成本需要
元数据驱动
金蝶K3BOS开发平台介绍

3
P3
K/3 BOS解决方案总体结构图
P4
BOS的构成
员 工 供 应 商 客 户 合 作 伙 伴
INTERNET
业 务 基 础 软 件 平 台
第 三 方 应 用
信息门户 业务流程 业务服务 基础平台
金蝶 BOS
应 用 服 务 器
生 命 周 期 管 理
业务建模工具 流程配置工具 数据集成工具 设计开发工具 测试部署工具
P17
部署与发布
主要功能
把业务功能发布至主控台或生
成安装包
客户价值
可以生成主控台菜单,统一访问
的方式
生成的安装包可以部署到其他账
套,实现开发环境与运行环境的 分离
P18
目录
产品简介 业务价值
19
P19
金蝶BOS平台对个人的应用价值
满足企业各层次人员对个性化ERP的需求:(业务需求、功能需求等)
功能菜单 工具栏
工程项目
界面编辑区
属性设置
控件工具箱
P8
可视化、与技术无关的集成开发环境
主要功能
可视化、技术无关的集成开发
子系统管理 工具栏和菜 单
环境
属性定义 丰富的字段 定义
可视化的定义业务单据
客户价值
通过鼠标点击、拖拉等方式创
建新系统,勿须编写程序代码, 所见即所得
P9
基础资料定义
主要功能
数 据 库
5
P5
金蝶K/3 BOS集成开发特性
简单拖拉拽,快捷制作基础资料界面
金蝶K/3 BOS
三大特性
可视化开发,快速设计业务单据界面
图形化配置,轻松搞定多级审核流程
简 单 快 速
K3 Cloud操作规程_BOS_集成开发平台

密级:★高★K/3标准操作规程BOS IDE业务对象设计XXX股份有限公司金蝶软件(中国)有限公司2022年3月23日2022-03-23程文档创建及更新记录文档审核记录文档去向记录程目录BOS平台 (4)1.1BOS平台 (4)1.1.1创建业务对象 (4)1.1.1.1采购订单创建 (6)1.1.1.2采购订单界面布局配置 (6)1.1.1.3采购订单功能属性配置 (8)1.1.1.4采购订单权限配置 (14)1.1.1.5采购订单发布 (15)1.1.2基于内置业务对象进行编辑 (17)1.1.2.1业务对象扩展 (17)程BOS平台1.1 BOS平台金蝶K/3 BOS(Business Operating System,业务操作系统),是一个开放的集成与应用平台,是金蝶ERP 解决方案、合作伙伴解决方案以及客户定制应用的技术基础。
金蝶K/3 BOS能够为企业灵活而迅速的设计、构建、实施和执行一套随需应变的ERP 系统;并能够与现有的IT基础设施无缝地协同运作;为不同行业不同企业的不同的应用阶段,提供随需应变的ERP解决方案。
企业用户通过K/3 BOS可以方便的进行业务配置,也可以通过K/3 BOS集成开发平台高效的进行个性化、行业化定制,使K/3 持续满足客户的需要,打造企业客户随需应变的ERP 系统,为客户带来持久的信息化投资收益。
1.1.1 创建业务对象➢以下面的案例介绍创建业务对象的步骤:1)系统管理员在蓝海集团本部中创建一个业务对象“简易采购订单”,以下简称“采购订单“。
2)创建采购订单有三种方式a)创建空白单据b)继承基对象模板c)复制现有的单据程3)选择业务对象创建向导,采用继承的方式创建。
4)采购订单字段及界面布局配置。
5)采购订单功能属性配置。
6)采购订单权限配置。
7)采购订单发布。
➢案例分析1)采购订单增加单据体字段:单据类型、采购日期、供应商等。
2)采购订单增加单据体字段:物料编码、物料名称、单位、数量、单价、金额。
用C++Builder开发金蝶K3BOS单据插件

用C++Builder写K/3 单据插件一、BOS 单据插件的开发1、新建一个工程,在“New Items”窗口中选择“ActiveX Library”,然后点击“OK”按钮。
这样系统会生成一个具有类型库的DLL工程,如下图所示:2、先保存工程,然后向工程中引入K3ClassEvents.dll类型库信息,类型库信息没有必要每个工程都重新引入,我们可以把引入类型库信息时生成的_tlb.cpp文件和_ocx.cpp文件保存到一个单独的文件夹中,以后新建工程时直接向工程中添加这些文件即可,在引入类型库信息时一定要选中“Generate Component Wrappers ”选项以生成包装组件,这样我们就不需要单独处理事件槽,本文档就是以这种方法进行插件编写,步骤如下:3、类型库单元文件生成后向工程中添加生成的单元文件,由于在引入K3ClassEvents 类型库时,其依赖的相关类型库信息也会同时引入,因此向工程中添加单元文件时也需添加相关的单元文件,需向工程中添加的单元文件见下图:4、向工程中添加自动化对象类,一般来说每个自动化对象类对应一张BOS单据并响应单据上的事件,添加自动化类的过程如下图所示:5、在接口实现类中定义TBillEvent*类型的私有变量,以用来实例化单据事件对象,示例代码如下:6、向类的实现接口中增加成员函数Show,其参数类型见下图:Show函数是最重要的函数,由VB调用因此Show函数在函数声明中须放在Public部分,在Show函数中主要完成三件工作:实例化单据接口对象,将实例化对象的事件与事件处理函数进行关联,将实例化对象连接到Show函数传递过来的派发接口上,Show函数的示例代码如下图:7、在实现函数类中增加折构函数,以便在单据关闭时调用折构函数删除创建的实例对象,释放内存。
折构函数的示例代码如下:8、事件处理函数的原型可以在”K3ClassEvents_OCX.cpp”中找到,复制过来稍做调整即,相关示例代码如下:9、最后编译工程生成.dll插件,先将插件在Windows注册表中注册然后在BOS集成开发工具的单据中引用即可。
K3_BOS_插件开发经典入门教程

金蝶 K/3 BOS V10.1插件开发指导手册金蝶软件(中国)有限公司目录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保存数据 (12)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中间层插件了。
K3BOS开发流程及接口介绍

版权所有 ©1993-2009 金蝶软件(中国)有限公司
P20
K/3 BOS 高级应用开发
(一)单据流转
选单关联关系
复制 关联复制 钩稽 强制钩稽
字段关联属性
修改 计算列 选单一致 过滤 处理选单值更新事件(Action:适用于选单值更新事件?) 仅复制
单据接口
示例
Set oDatasrv = CreateObject("K3ClassTpl.DataSrv") oDatasrv.ClassTypeID = lClassTypeID Set obj = CreateObject("K3SingleClassBill.ClassInfoManager") With obj .DataSrv = oDatasrv .ISNetControl = False .ISCheckRight = False .Show lBillID, , BillStatus bOK = .IsOK End With
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P2
目录
K/3 BOS概述 K/3 BOS单据开发流程 K/3 BOS相关接口调用 K/3 BOS高级应用开发 K/3 BOS参考资料 Q/A
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P3
K/3 BOS 概述
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P23
K/3 BOS 业务应用开发
单据转换流程
温馨提示:
当BOS单据与工业单据关联目标单单据体上的物料、计量单位 、数量、基本计量单位数量必须有对应的源单字段,否则关联 时可能会出现错误。 控制字段、扣减字段、关闭字段必须位于同一单据体、头上。 关联内码来源:关联复制关系时有效,指源单内码的来源。
K BOS开发流程及接口介绍

版权所有 ©1993-2009 金蝶软件(中国)有限公司
P17
K/3 BOS 相关接口调用
基础资料接口
示例
Set obj = CreateObject("K3ClassLookUp.BillLookUp") obj.ClassTypeID = lClassTypeID Set obj.Filter = dct obj.ShowType = 1 'Enu_ShowType.Enu_Explore Set retVect = obj.Show Set obj = Nothing
P14
K/3 BOS 相关接口调用
单据接口
示例
Set oDatasrv = CreateObject("K3ClassTpl.DataSrv")
oDatasrv.ClassTypeID = lClassTypeID
Set obj = CreateObject("K3SingleClassBill.ClassInfoManager")
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P21
K/3 BOS 业务应用开发
单据转换流程
元数据模型
选单模板 工业单据 BOS单据
数据表 ICClassLink ICSelBills ICTableRelation ICWriteBackTemplate ICClassLink ICCLassLinkEntry ICClassLinkCommit
With obj
.DataSrv = oDatasrv
.ISNetControl = False
.ISCheckRight = False
金蝶K3 BOS培训—IDE

BOS设计器演示—资料 处理值更新事件 选中此项(打上勾)表示在源单上的值被 复制到目的单之后,如果目的单上的字段 的值更新事件有相应的动作内容,这些动 作内容将会执行,例如复制物料之后自动 携带物料对应的属性如物料的规格型号等, 如果值更新事件需要更新的字段已经在选 单时被复制过来了,其值将以复制过来的 值为准,不再进行更新。
类型
单据编号
所在页
单据头 单据头 单据头 单据头 单据头 单据头 单据体 单据体
特殊要求
单位
单价 数量 金额
基础资料—单位
单价 数量 金额
单据体
单据体 单据体 单据体 金额=数量*单价 金额=数量*单价
BOS设计器演示 添加系统、子系统 BOS销售订单、BOS销售出库单定义
讲解单据、字段属性 讲解常用字段 讲解核算项目类别、核算项目和组合字段 讲解数量、单价和小数、整数字段 讲解审核人和审核日期
BOS设计器演示—资料 扣减字段
源单上的数量型字段,用于记录由某一源单生成 的一张或者多张目标单上所有的对应的目标字段 的数值的总和。此字段用户应该不能直接修改, 系统会自动在生成目标单时对此字段进行反写。 此字段可以是任意的数值型字段,并且不能是关 联关系中已经指定的源单字段(逻辑错误),也 不能和控制字段相同。但是扣减字段必须和控制 字段位于相同的单据头/单据体上。
BOS设计器演示—资料 仅复制 如果关联关系是“钩稽”或者“强制钩 稽”,当一个源单字段同时关联到目标单 的两个及以上字段时,只能有一个字段作 为钩稽字段,其他字段都是复制字段,需 要在此打上勾,详见钩稽字段设置界面的 说明。
K3 BOS 插件开发培训

P2
插件开发概述
为什么要用插件
完成当前版本无法用 K/3 BOS 标准功能实现的需求,插件原理图如下
插件的作用
实现单据、序时簿、基础资料序时簿中特殊的业务流程处理 中间层数据改变时的特殊处理规则 个性化的菜单、外观定制;增加自定义的菜单并响应其操作 对审核、消息流程的自定义控制
P3
插件开发概述插件开发概述-开发环境介绍
插件开发环境
金蝶K/3 v10.1以上的版本
必选安装客户端、K/3 BOS K/3 BOS,推荐同时安装中间层Microsoft Visual Basic 推荐使用 vb 6.0 版本,并且安装 SP5
Microsoft Windows 2000 Server以上版本
推荐采用 Server 类操作系统作为开发、调试操作系统 注意:如果要使用“金蝶K/3 BOS K/3 BOS插件开发向导”工具,需要采用简体中文操 作系统
P13
概述
BOSBands、BOSTools对象 在BillEvent、ListEvents 对象中包含MenuBar属性使用。 例如: Dim oMenuBar As K3ClassEvents.MenuBar Set oMenuBar = BillEventObject.Menubar 在BillEvent、ListEvents、BaseClassEvent对象新增事件 Sub MenuBarInitialize(ByVal oMenuBar As K3ClassEvents.MenuBar) Sub MenuBarClick(ByVal BOSTool As K3ClassEvents.BOSTool, Cancel As Boolean)
K/3 BOS 插件开发培训
金蝶K3 BOS插件开发常见技巧

1、如何在工具栏上添加多级审核的按钮?在m_BillInterface_MenuBarInitialize事件里添加如下代码即可。
Set oTool = m_BillInterface.MenuBar.BOSTools("mnuEditMultiCheck")With oTool.Caption = "多级审核".ToolTipText = "多级审核".Description = "多级审核".BeginGroup = False.ToolPicture = App.Path + "\Checker.bmp".SetPicture 0, vbButtonFaceEnd WithSet oBand = oMenuBar.BOSBands("BandToolBar")oBand.BOSTools.InsertBefore "mnuFilePrint", oTool '将菜单对象插入指定工具栏2、如何在显示一张Bos单据的同时给它赋值?要想在显示Bos单据的同时给它赋值,关键是在显示前要购建m_Billinterface的data包,这样在显示这张同据的时候,程序会解析data包,并将里面的值赋到单据界面上来。
Dim dctData As kfo.DictionaryDim datasrv as objectDim oTableinfo as objectSet DataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv")DataSrv.ClassTypeID = lClassTypeID 'lClassTypeID 需要弹出单据的IDSet oTableInfo = DataSrv.TableInfoSet dctData = DataSrv.GetEmptyBill '然后将当前单据数据包中需要的数据填充到dctdata的对应字段' 在以上语句执行后,dctdata(“page2”)里只有一行表结构(即表体只有一行)'赋表头的值dctData("Page1")(oTableinfo("map")("FText"))("FFLD") = m_BillInterface.GetFieldValue("FText")dctData("Page1")(oTableinfo("map")("FDeptID"))("FFLD") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FFLD)dctData("Page1")(oTableinfo("map")("FDeptID"))("FFND") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FFND)dctData("Page1")(oTableinfo("map")("FDeptID"))("FDSP") = m_BillInterface.GetFieldValue("FDeptID", -1, Enu_ValueType_FDSP)'赋表体的值Dim oPage2 As ObjectFor i = 1 To m_BillInterface.Data("Page2").UBound - 1Set oPage2 = dctData("Page2")(1).CloneAlldctData("Page2").Add oPage2 '添加到 dcDatadctData("Page2")(i + 1)(oTableinfo("map")("FIndex2"))("FFLD") = i + 1 '更改分录号NextFor i = 1 To m_BillInterface.Data("Page2").UBound'物料 FItemIDdctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FFLD") = m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FFLD)dctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FDSP") = m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FDSP)dctData("Page2")(i)(oTableinfo("map")(" FItemID "))("FFND") = m_BillInterface.GetFieldValue("FItemID ", i, Enu_ValueType_FFND)'物料名称 fbasepropertydctData("page2")(i)(oTableinfo("map")("fbaseproperty"))("FFLD") = m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FFLD)dctData("Page2")(i)(oTableinfo("map")("fbaseproperty"))("FDSP") = m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FDSP)dctData("Page2")(i)(oTableinfo("map")("fbaseproperty"))("FFND") = m_BillInterface.GetFieldValue("fbaseproperty", i, Enu_ValueType_FFND)'计量单位 FUnitIDdctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FFLD") = m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FFLD)dctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FDSP") = m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FDSP)dctData("Page2")(i)(oTableinfo("map")(" FUnitID "))("FFND") = m_BillInterface.GetFieldValue("FUnitID ", i, Enu_ValueType_FFND)'数量 FQtydctData("Page2")(i)(oTableinfo("map")("FQty"))("FFLD") = m_BillInterface.GetFieldValue("fqty", i, Enu_ValueType_FFLD)NextSet obj = CreateObject("K3SingleClassBill.ClassInfoManager")With obj.datasrv = datasrv.ISCheckRight = True.Show , , , dctDataEnd With3、如何在插件中实现选单的功能?调用Bos单据m_BillInterface.BillCtl.DoSelBill lClassTypeID '(原单的ClassTypeID)调用工业单据m_BillInterface.BillCtl.DoSelOldBill lClassTypeID '(原单的ClassTypeID)4、在插件中以新增、修改和查看方式打开另一单据'********************************************'功能:显示BOS单据,显示的方式为新增、修改和浏览'参数:lClassTypeID—显示BOS单据的ID''********************************************Private Sub ShowBill(ByVal lClassTypeID As Long)Dim oDataSrv As ObjectDim oBill As ObjectOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK/3Object("K3ClassTpl.DataSrv") oDataSrv.ClassTypeID = lClassTypeIDSet oBill = CreateObject("K3SingleClassBill.ClassInfoManager")With oBill.DataSrv = oDataSrv.ISNetControl = True.ISCheckRight = True.Show'**********************'Show 参数类型'第一个参数 Optional ByVal lID As Long = 0 ;描述修改或查看的单据ID'第二个参数 Optional ByVal bShowGroup As Boolean = False ;如是基础资料时,是否显示分组'第三个参数 Optional ByVal BillStatus As Long = Enu_BillStatus_New ;显示方式 0—查看;1—新增;2—修改'第四个参数 Optional ByVal dctData As KFO.Dictionary '单据初始值'**********************End WithSet oDataSrv = NothingSet oBill = NothingExit Suberr_ctr:Set oDataSrv = NothingSet oBill = NothingEnd Sub5、显示BOS序时簿并返回选中的值'********************************************'功能:显示BOS序时簿并返回选中的值'参数:lClassTypeID—显示BOS单据的ID''********************************************Private Function ShowListByReturn(ByVal lClassTypeID As Long) As ObjectDim oDataSrv As ObjectDim objLookup As ObjectOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv") oDataSrv.ClassTypeID = lClassTypeIDIf oDataSrv.showfilter ThenSet objLookup = CreateObject("K3ClassLookUp.BillLookUp")objLookup.ClassTypeID = lClassTypeIDSet objLookup.DataSrv = oDataSrvobjLookup.LookupSet ShowListByReturn = objLookup.VectReturnEnd IfSet oDataSrv = NothingSet objLookup = NothingExit Functionerr_ctr:Set oDataSrv = NothingSet objLookup = NothingEnd Function6、如何在序事簿中得到选中行的记录集值?Dim vectSelect as kfo.vectorDim rs as adodb.recordsetSet vectSelect=m_Listinterface.GetSelectedBillInfoSet rs=m_Listinterface.datasrv.GetBillDetail(vectSelect(1)("FID"))7、将当前单据转化为另一单据,并无界面保存数据'********************************************'功能:将当前单据转化为另一单据,并无界面保存数据'参数:lClassTypeID—显示BOS单据的ID'********************************************Private Sub NoUISaveBill(ByVal lClassTypeID As Long)Dim oDataSrv As ObjectDim oTableInfo As ObjectDim oBill As ObjectDim oData As ObjectDim oSrv As ObjectDim oPage2 As ObjectDim i As LongOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv") oDataSrv.ClassTypeID = lClassTypeIDSet oTableInfo = oDataSrv.TableInfoSet oData = oDataSrv.GetEmptyBillFor i = 1 To m_BillInterface.Data("Page2").UBound - 1Set oPage2 = oData("Page2")(1).CloneAlloData("Page2").Add oPage2 '添加到 dcDataoData("Page2")(i + 1)("_-0001_FIndex2")("FFLD") = i + 1 '更改分录号NextFor i = 1 To m_BillInterface.Data("Page2").UBoundoData("Page2")(i)(oTableInfo("map")("FItemID"))("FFLD") =m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FFLD) oData("Page2")(i)(oTableInfo("map")("FItemID"))("FFND") =m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FFND) oData("Page2")(i)(oTableInfo("map")("FItemID"))("FDSP") =m_BillInterface.GetFieldValue("FItemID", i, Enu_ValueType_FDSP)NextSet oSrv = CreateObject("K3MClass.BillUpdate")i = oSrv.Save(MMTS.PropsString, oDataSrv.ClassType, oDataSrv.ClassTypeEntry,oDataSrv.TableInfo, oData, oDataSrv.dctLink)Set oDataSrv = NothingSet oBill = NothingExit Suberr_ctr:MsgBox Err.DescriptionSet oDataSrv = NothingSet oBill = NothingEnd Sub【备注】1、K/3 BOS保存方法Save的参数描述:'Public Function Save(ByVal sDsn As String, _' ByVal dctClassType As KFO.Dictionary, _' ByVal vctClassTypeEntry As KFO.Vector, _' ByVal dctTableinfo As KFO.Dictionary, _' ByRef dctData As KFO.Dictionary, _' ByVal dctLinks As KFO.Dictionary) As Long'/********************************************************************/'/*描述:单据保存'/*参数:'/*@ dctClassType KFO.Dictionary 单据整体信息模板'/*@ dctData KFO.Dictionary 单据数据包'/*@ dctLink KFO.Dictionary 选单关系模板,无选单为Nothing'/*@ dctTableInfo KFO.Dictionary 单据字段模板信息'/*@ sDsn String K/3标准数据库连接串'/*@ vctClassTypeEntry KFO.Vector 单据体模板信息'/*备注:'/********************************************************************/2、使用此方法时插件要添加MMTS。
金蝶K3 BOS培训—IDE

单据头 空运、陆运、海运
单据头
单据头
单据头
单据体
单据体
单据体
单据体 单据体 单据体
金额=数量*单价 金额=数量*单价
练习— BOS销售出库单
字段
单据编号 交货日期 客户 制单人 审核人 审核日期 仓库 物料代码 物料名称 单位 单价 数量 金额
类型
单据编号 日期 基础资料—客户 制单人 基础资料—用户
K/3 BOS培训—IDE
常州金蝶开发部 谷牧
Байду номын сангаас
提纲
• 开发流程 • IDE讲解 • 练习 • 一些问题处理
K/3 BOS标准开发流程
K/3 BOS
需求 分析
业务 抽象
业务对 象定义
流程 定义
定制 插件
报表 定义
部署
发布
提纲
• 开发流程 • IDE讲解 • 练习 • 一些问题处理
案例— BOS销售订单
所在页
特殊要求
单据头
单据头
单据头
单据头
单据头
单据头
单据体
单据体
单据体
单据体 单据体 单据体
金额=数量*单价 金额=数量*单价
BOS设计器演示
添加系统、子系统 BOS销售订单、BOS销售出库单定义
讲解单据、字段属性 讲解常用字段 讲解核算项目类别、核算项目和组合字段 讲解数量、单价和小数、整数字段 讲解审核人和审核日期
单据头
单据头
单据头
单据体
单据体
单据体
单据体 单据体 单据体
金额=数量*单价 金额=数量*单价
案例— BOS销售出库单
字段
单据编号 交货日期 客户 制单人 审核人 审核日期 物料代码 物料名称 单位 单价 数量 金额
K3+Cloud+BOS开发培训_插件开发1-接口

架构模型动态表单领域模型插件开发步骤定义插件类(参照继承体系);分析业务定义重载方法;引用相关组件(参照组件引用规则);重载方法编码;设置编译路径,编译组件;打开IDE设计器,配置插件;动态表单视图接口IDynamicFormViewIDynamicFormViewService2个重要的属性BusinessInfoLayoutInfo界面元素访问1、访问菜单this.View.GetMainBarItemthis.View.GetBarItem2、访问表单控件this.View.GetControlthis.View.GetView3、访问字段this.View.GetFieldEditorthis.View.LockFieldthis.View.SetFormTitle 4、执行操作ShowFormUpdateViewInvokeFieldUpdateService动态表单模型接口IDynamicFormModelIDynamicFormModelService属性BusinessInfoDataObject数据操作CreateNewDataCreateNewEntryRowInsertEntryRowGetEntryCurrentRowIndexLoadReferenceDataGetValueGetEntityDataObject动态表单插件命名空间:Kingdee.BOS.Core.DynamicForm.PlugInIDynamicFormViewPlugIn IDynamicFormModelPlugIn加载机制OnInitializeCreateNewData / AfterCreateNewData BeforeBindData / AfterBindDataBeforeClosed表单操作BeforeDoOperation / AfterDoOperationBeforeF7Select / AfterF7Select TabItemSelectedChange表单事件BarItemClickEntryBarItemClickToolBarItemClickButtonClickEntityRowClickEntityRowDoubleClickEntryButtonCellClick模型访问操作BeforeUpdateValueBeforeDeleteRowAfterDeleteRow单据插件(基础资料插件)继承自动态表单接口IBillViewPlugInOnBillInitialize参数BillOpenParameterIBillModelPlugInBeforeSave / AfterSaveBeforeSubmit / AfterSubmit列表插件继承自动态表单接口IListViewPlugInOnListInitialize参数ListOpenParameterAfterGetDataFormatCellValueIListModelPlugInPrepareFilterParameterBatchCopyData过滤条件插件接口IListFilterViewIListFilterModelFilterObjectQuickFilterObjectIsolationOrgIdGetFilterField事件OnParseSettingFireBeforeBindFilterMetadataFireBeforeSelectTreeNodeScheme服务插件命名空间:Kingdee.BOS.Core.DynamicForm.PlugIn抽象类:AbstractOperationServicePlugIn继承体系:(继承自抽象类)Kingdee.BOS.Core.DynamicForm.PlugIn.AbstractOperationServicePlugIn接口IOperationServicePlugInBeforeExecuteOperationTransactionAfterExecuteOperationTransactionBeginOperationTransactionEndOperationTransaction校验服务IOperationServicePlugInOnAddValidatorsSaveValidator : AbstractValidatorValidate表单插件和列表插件继承层次表单单据叙事簿基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dllAbstractBillPlugIn 接口AbstractBillPlugIn的ViewPlugin插件接口OnBillInitialize 视图模型初始化事件AfterBindData 绑定数据后事件处理接口BeforeF7Select 基础资料弹出前事件BeforeClosed 窗口关闭前事件BarItemClick 菜单单击事件处理扩展接口AfterBarItemClick 菜单单击事件后BeforeDoOperation 操作调用前事件AfterDoOperation 操作调用完成后事件ButtonClick 按钮单击事件AfterButtonClick 按钮单击后事件ListViewClick 列表项目单击事件TreeNodeClick 树控件单击事件TreeDragDrop 树控件拖拽EntityRowClick 分录行单击事件AbstractBillPlugIn的ModelPlugIn接口动态表单数据模型插件编程接口定义了数据模型扩展允许通过接口处理数据,以实现特定业务需求AbstractBillPlugIn插件方法CreateNewData 数据模型创建实体对象事件AfterCreateNewData 数据模型创建实体对象完成后事件BeforeUpdateValue 数据更新前事件DataChanged 数据改变后事件CreateNewEntryRow 创建分录行事件BeforeDeleteRow 删除分录行事件AfterDeleteRow 删除分录后事件叙事簿插件接口AbstractListPlugIn 的ViewPlugIn接口序时簿视图插件编程模型接口定义了序时簿视图模型扩展允许通过接口处理视图,实现特定业务需求ListInitialize 视图模型初始化事件AfterGetData 完成取数后事件FormatCellValue 列表格式化接口BeforeButtonClick 按钮和菜单单击前事件AfterButtonClick 按钮和菜单单击后事件CellDbButtonClick 单元格双击事件AbstractListPlugIn 的ModelPlugIn接口序时簿数据模型插件编程接口定义了序时簿数据模型扩展允许通过接口处理数据,以实现特定业务需求PrepareFilterParameter 准备过滤条件CreateFilterEditorControl 触发创建过滤条件控件事件BatchCopyData 复制单据事件AfterBatchCopyData 复制单据完毕事件服务插件插件特性IOperationServicePlugin一般会附加校验器运行于App层事务保护插件针对对象操作Kingdee.BOS.Core.dll服务插件AbstractOperationServicePlugIn应用服务器插件与业务数据更新操作在一个事务执行校验器插件AbstractValidator在服务插件的OnAddValidators加入AbstractOperationServicePlugIn插件方法OnPreparePropertys 可以定制加载指定字段到实体里OnAddValidators 添加自定义数据校验器BeforeExecuteOperationTransaction 执行操作事务前事件AfterExecuteOperationTransaction 执行操作事务后事件BeginOperationTransaction 调用操作事件前触发(支持事务) EndOperationTransaction 调用操作事件完毕(支持事务)表单构建插件继承层次表单单据叙事簿基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dllAbstractDynamicWebFormBuilderPlugIn插件方法CreateControl 构建界面元素事件AfterCreateControl 构建界面元素后事件CreateMainMenu 构建菜单事件AfterCreateMainMenu 构建菜单后事件表单插件调用过程由控制器创建视图、模型、插件代理初始化视图、模型由插件服务注册到插件代理插件代理初始化插件加载数据,通知插件创建数据,创建表单数据包表单操作插件服务调用代理,发送事件通知插件代理调用插件,执行事件返回执行结果View对象属性this.View(View接口)this.View的常用属性BusinessInfo(界面业务对象元数据)LayoutInfo(布局元数据)Model(动态表单模型接口)OpenParameter(页面调用时传入的参数)方法GetFieldEditor (获取界面控件对象)UpdateView(重新更新界面数据及状态)ShowMessage(显示信息)更改界面控件状态this.View. GetFieldEditor示例:/// <summary>/// 设置金额列精度/// </summary>/// <param name="iScale"></param>/// <param name="strField"></param>private void SetColumnScale(short iScale, string strField){his.View.GetFieldEditor<DecimalFieldEditor>(strField, -1).Scale = iScale; }更新界面数据和状态this.View.UpdateView示例:/// <summary>/// 字段修改事件函数重载/// </summary>public override void DataChanged(DataChangedEventArgs e){switch (e.Key.ToUpper()){case "FPARENTDEPTID": //组织隶属方案和上级部门变化,重新生成部门全称this.Model.SetValue(“FFullName”, GetFullName(e.Key));this.View.UpdateView(“FFullName”);break;}}显示信息this.View.ShowMessage示例:if (e.CurParentId == "0"){this.View.ShowMessage(“请先选择顶层组织。
K3BOS插件开发入门教程

BOS插件开发入门教程本文主要针对初学者,介绍BOS插件开发与制作的基本流程与步骤,为入门所用。
以一个简单的插件开发需求为例:比如想在新开发的BOS单据上,增加一个自定义菜单按钮,按钮标题为“My BOS MenuBarButton”,位置放在编辑菜单下的驳回审核按钮之后,在工具栏上的退出按钮之前;当点击该自定义按钮时弹出提示框“Hello,This Is My First BOS Bill InterFace!”。
针对此需求,让我们一起看看如何一步一步通过BOS插件来实现:【第一步】:由于插件是基于VB语言开发,首先需要在装有金蝶K3的环境下安装Microsoft Visual Basic 6.0(简称VB6.0)开发工具。
附开发工具下载地址:/liangchan/1935.html【第二步】:安装好VB6.0之后,在开始菜单中找到VB6.0的快捷方式,打开VB之后将出现以下界面(如图1):图1在此界面一定要选择“ActiveX DLL”,再点击“打开”按钮,然后会进入以下工作界面(如图2):图2注意界面右上方的“插件开发向导”按钮。
有的环境可能会出现打开VB6.0后并没有“金蝶k/3-BOS”菜单的问题,解决方法如下:找到K3安装目录下的ADDIN文件夹,将此文件夹下的两个DLL文件(K3BOSPLUGINSADDIN.dll 和K3GLParaConsolePlugin.dll),在CMD命令行中用RegSvr32命令进行注册。
例如:K3安装目录为C:\Program Files\Kingdee\K3ERP,那么在cmd中输入命令就为:regsvr32 "C:\Program Files\Kingdee\K3ERP\ADDIN\K3BOSPLUGINSADDIN.dll"regsvr32 "C:\Program Files\Kingdee\K3ERP\ADDIN\K3GLParaConsolePlugin.dll"回车提示注册成功之后,再重新打开VB就会出现“金蝶k/3-BOS”菜单,如果还没出现需要再重启下电脑解决。
K3 BOS开发手册

金蝶K/3 BOS开发手册目录1 前言 (1)1.1K/3BOS概述 (1)1.2K/3BOS客户化开发工具 (1)1.3K/3BOS典型开发案例 (3)1.3.1 业务应用场景 (3)1.3.2 业务分析 (3)1.3.3 步骤1:定义基本资料 (4)1.3.4 步骤2:定义单据 (7)1.3.5 步骤3:定义业务流程 (9)1.3.6 步骤4:业务单据发布 (10)2 界面设计工具 (12)2.1功能概述 (13)2.2字段管理 (15)2.3数据来源 (17)2.4字段类型 (20)2.5项目的属性 (21)2.6事件处理过程 (23)3 流程设计工具 (27)3.1单据关系 (27)3.2流程状态 (27)3.3操作步骤 (28)4 报表设计工具 (30)5 业务发布 (30)5.1引出和执行脚本 (30)5.2主控台部署 (32)6 插件编程 (34)6.1插件编程概述 (34)6.2插件编程原理 (34)6.2.1 什么是插件 (34)6.2.2 插件原理 (34)6.2.3 应用程序代理对象(ApplicationProxy) (36)6.2.4 对插件支持的开发步骤 (37)6.3客户端插件编程 (37)6.3.1 插件公共入口方法 (37)6.3.2 单据事件代理组件BillEvent (38)6.3.3 序时簿事件代理组件ListEvents (47)6.4中间层插件编程 (50)6.4.1 单据保存前中间层插件 (50)6.4.2 单据保存后中间层插件 (51)6.4.3 单据删除前中间层插件 (52)6.4.4 单据删除后中间层插件 (52)6.5判断业务对象引用存储过程编写 (53)6.5.1 存储过程标准定义 (53)6.5.2 业务对象和存储过程关联 (54)6.5.3 存储过程实例 (55)7 K/3 BOS数据库结构 (55)7.1ICC LASS A CTION (56)7.2ICC LASS C ONDITION (57)7.3ICC LASS C ONST (57)7.4ICC LASS G ROUP I NFO (57)7.5ICC LASS L INK (58)7.6ICC LASS L INK E NTRY (59)7.7ICC LASS P ROFILE (59)7.8ICC LASS P ROFILE E NTRY (59)7.9ICC LASS T ABLE I NFO (60)7.10ICC LASS T YPE (62)7.11ICC LASS T YPE E NTRY (63)1 前言1.1 K/3 BOS概述金蝶BOS(Business Operation System)——金蝶业务操作系统,它使用先进、开放、可伸缩的技术体系,面向企业快速成长的业务需求,协同合作伙伴拓展管理业务,通过科学的工具和流程对企业建模进行全程监控。
金蝶K3 BOS二次开发

任务2 字段定义
介绍:(1)字段分类; (2)字段属性分类; (3)字段特殊属性定义; (4)物理表定义; (5)单据关键字段定义; (6)名称、描述定义; (7)尺寸属性;
任务3 事件定义及单据运行测试
操作:(1)计算定义公式的值并填写到指定列;
(2)合法性检查; (3)携带当前字段相关属性到指定列; (4)表达式为真/假时显示/隐藏字段; (5)表达式为真/假时锁定/解锁字段;
金蝶K/3 12.1 BOS 应用开发
李武韬 办公室:SC514
项目一 金蝶K/3 BOS概述
面向服务架构(Service-Oriented Architecture,简称SOA) :一个组件模型, 它将应用程序的不同功能单元(称为服务) 通过这些服务之间定义良好的接口和契约联 系起来。 例如:海澜之家更换制造商
任务4 权限定义
功能权限、字段权限定义
任务5 其它单据定义功能
1.业务对象操作定义:操作管理(改变适用 场景,新增操作),操作消息管理 2.界面布局定义 3.窗体风格定义 4.录入顺序定义
上机练习:单据定义 项目十一 上机操作 练习一 外贸合同 练习二 生产领料结算单 练习三 生产工艺单 其他:
服务被抽象为统一的模型,形成业务服务库。
BOS使用开放的平台及技术标准。 业务服务完整的生命周期。
思考和讨论: 如何理解BOS? 如何通过BOS理解更为抽象的SOA?
任务2 BOS开发流程
K/3 BOS
需求 分析
业务 抽象
业务对 象定义
流程 定义
定制 插件
报表 定义
部 署
项目四 K/3 BOS集成开发平台
任务1 K/3 BOS集成开发平台功能介绍 演示及操作练习
金蝶K3 BOS二次开发

服务被抽象为统一的模型,形成业务服务库。
BOS使用开放的平台及技术标准。 业务服务完整的生命周期。
思考和讨论: 如何理解BOS? 如何通过BOS理解更为抽象的SOA?
任务2 BOS开发流程
K/3 BOS
需求 分析
业务 抽象
业务对 象定义
流程 定义
定制 插件
报表 定义
部 署
任务2 字段定义
介绍:(1)字段分类; (2)字段属性分类; (3)字段特殊属性定义; (4)物理表定义; (5)单据关键字段定义; (6)名称、描述定义; (7)尺寸属性;
任务3 事件定义及单据运行测试
操作:(1)计算定义公式的值并填写到指定列;
(2)合法性检查; (3)携带当前字段相关属性到指定列; (4)表达式为真/假时显示/隐藏字段; (5)表达式为真/假时锁定/解锁字段;
项目四 K/3 BOS集成开发平台
任务1 K/3 BOS集成开发平台功能介绍 演示及操作练习
任务2 K/3 BOS子系统管理 演示及操作练习 课后练习
项目五 蓝海机械基础资料定义
新建基础资料-生产部门 单据测试和序时簿测试
项目六 单据定义
任务1 基础信息定义
注意:(1)模板的使用; (2)单据层管理
任务4 权限定义
功能权限、字段权限定义
任务5 其它单据定义功能
1.业务对象操作定义:操作管理(改变适用 场景,新增操作),操作消息管理 2.界面布局定义 3.窗体风格定义 4.录入顺序定义
上机练习:单据定义 项目十一 上机操作 练习一 外贸合同 练习二 生产领料结算单 练习三 生产工艺单 其他:
发布
项目二 应用案例蓝海机械介绍
第二节 K3 BOS 详解

适应多种语言环境
主要功能
能够定义中文简体、中文繁体、 英语等三种语言操作界面
客户价值
适应国际化企业管理的需要 适应不同人员的语言习惯与操作 方式
P18
版权所有 ©1993-2006 金蝶软件(中国)有限公司
部署与发布
主要功能
把业务功能发布至主控台或生 成安装包
客户价值
可以生成主控台菜单,统一访问 的方式 生成的安装包可以部署到其他账 套,实现开发环境与运行环境的 分离
特殊的文本类型,提供业务对 象的备注说明。
提供复选功能。
提供下拉列表字段支持,下拉 列表的值提供手工指定与SQL查 询获取两种形式。
提供图形的显示。
版权所有 ©1993-2006 金蝶软件(中国)有限公司
业务单据定义-字段类别2
分类
元素类型
基础资料类 基础资料
前置字段
无
可录入
是
基础资料属性 基础资料
P13
版权所有 ©1993-2006 金蝶软件(中国)有限公司
多级审核流程、消息定义
主要功能
对业务单据可以提供12级的多 级审核流程,审核消息可以发送 至指定的用户、用户组或默认用 户
客户价值
满足给客户顺序、会签两种多级 审批业务需求,便于客户对业务 进行分级管理和业务监控。 消息驱动多级审核流程,可以简 化审批的工作量并降低操作的复 杂性
前置字段 可录入
无
是
无
否
无
否
无
否
有字段参与组合 是
无
否
无
否
说明
单据的单据体,可以是单分录,也可 以是多分录。
提供单据编号服务,用户可以设置单 据编号规则及自动填补断号等选项。
K3+Cloud+BOS开发培训_插件开发1-接口

架构模型动态表单领域模型插件开发步骤定义插件类(参照继承体系);分析业务定义重载方法;引用相关组件(参照组件引用规则);重载方法编码;设置编译路径,编译组件;打开IDE设计器,配置插件;动态表单视图接口IDynamicFormViewIDynamicFormViewService2个重要的属性BusinessInfoLayoutInfo界面元素访问1、访问菜单this.View.GetMainBarItemthis.View.GetBarItem2、访问表单控件this.View.GetControlthis.View.GetView3、访问字段this.View.GetFieldEditorthis.View.LockFieldthis.View.SetFormTitle 4、执行操作ShowFormUpdateViewInvokeFieldUpdateService动态表单模型接口IDynamicFormModelIDynamicFormModelService属性BusinessInfoDataObject数据操作CreateNewDataCreateNewEntryRowInsertEntryRowGetEntryCurrentRowIndexLoadReferenceDataGetValueGetEntityDataObject动态表单插件命名空间:Kingdee.BOS.Core.DynamicForm.PlugInIDynamicFormViewPlugIn IDynamicFormModelPlugIn加载机制OnInitializeCreateNewData / AfterCreateNewData BeforeBindData / AfterBindDataBeforeClosed表单操作BeforeDoOperation / AfterDoOperationBeforeF7Select / AfterF7Select TabItemSelectedChange表单事件BarItemClickEntryBarItemClickToolBarItemClickButtonClickEntityRowClickEntityRowDoubleClickEntryButtonCellClick模型访问操作BeforeUpdateValueBeforeDeleteRowAfterDeleteRow单据插件(基础资料插件)继承自动态表单接口IBillViewPlugInOnBillInitialize参数BillOpenParameterIBillModelPlugInBeforeSave / AfterSaveBeforeSubmit / AfterSubmit列表插件继承自动态表单接口IListViewPlugInOnListInitialize参数ListOpenParameterAfterGetDataFormatCellValueIListModelPlugInPrepareFilterParameterBatchCopyData过滤条件插件接口IListFilterViewIListFilterModelFilterObjectQuickFilterObjectIsolationOrgIdGetFilterField事件OnParseSettingFireBeforeBindFilterMetadataFireBeforeSelectTreeNodeScheme服务插件命名空间:Kingdee.BOS.Core.DynamicForm.PlugIn抽象类:AbstractOperationServicePlugIn继承体系:(继承自抽象类)Kingdee.BOS.Core.DynamicForm.PlugIn.AbstractOperationServicePlugIn接口IOperationServicePlugInBeforeExecuteOperationTransactionAfterExecuteOperationTransactionBeginOperationTransactionEndOperationTransaction校验服务IOperationServicePlugInOnAddValidatorsSaveValidator : AbstractValidatorValidate表单插件和列表插件继承层次表单单据叙事簿基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dllAbstractBillPlugIn 接口AbstractBillPlugIn的ViewPlugin插件接口OnBillInitialize 视图模型初始化事件AfterBindData 绑定数据后事件处理接口BeforeF7Select 基础资料弹出前事件BeforeClosed 窗口关闭前事件BarItemClick 菜单单击事件处理扩展接口AfterBarItemClick 菜单单击事件后BeforeDoOperation 操作调用前事件AfterDoOperation 操作调用完成后事件ButtonClick 按钮单击事件AfterButtonClick 按钮单击后事件ListViewClick 列表项目单击事件TreeNodeClick 树控件单击事件TreeDragDrop 树控件拖拽EntityRowClick 分录行单击事件AbstractBillPlugIn的ModelPlugIn接口动态表单数据模型插件编程接口定义了数据模型扩展允许通过接口处理数据,以实现特定业务需求AbstractBillPlugIn插件方法CreateNewData 数据模型创建实体对象事件AfterCreateNewData 数据模型创建实体对象完成后事件BeforeUpdateValue 数据更新前事件DataChanged 数据改变后事件CreateNewEntryRow 创建分录行事件BeforeDeleteRow 删除分录行事件AfterDeleteRow 删除分录后事件叙事簿插件接口AbstractListPlugIn 的ViewPlugIn接口序时簿视图插件编程模型接口定义了序时簿视图模型扩展允许通过接口处理视图,实现特定业务需求ListInitialize 视图模型初始化事件AfterGetData 完成取数后事件FormatCellValue 列表格式化接口BeforeButtonClick 按钮和菜单单击前事件AfterButtonClick 按钮和菜单单击后事件CellDbButtonClick 单元格双击事件AbstractListPlugIn 的ModelPlugIn接口序时簿数据模型插件编程接口定义了序时簿数据模型扩展允许通过接口处理数据,以实现特定业务需求PrepareFilterParameter 准备过滤条件CreateFilterEditorControl 触发创建过滤条件控件事件BatchCopyData 复制单据事件AfterBatchCopyData 复制单据完毕事件服务插件插件特性IOperationServicePlugin一般会附加校验器运行于App层事务保护插件针对对象操作Kingdee.BOS.Core.dll服务插件AbstractOperationServicePlugIn应用服务器插件与业务数据更新操作在一个事务执行校验器插件AbstractValidator在服务插件的OnAddValidators加入AbstractOperationServicePlugIn插件方法OnPreparePropertys 可以定制加载指定字段到实体里OnAddValidators 添加自定义数据校验器BeforeExecuteOperationTransaction 执行操作事务前事件AfterExecuteOperationTransaction 执行操作事务后事件BeginOperationTransaction 调用操作事件前触发(支持事务) EndOperationTransaction 调用操作事件完毕(支持事务)表单构建插件继承层次表单单据叙事簿基础资料插件针对对象动态表单单据基础资料Kingdee.BOS.Core.dllAbstractDynamicWebFormBuilderPlugIn插件方法CreateControl 构建界面元素事件AfterCreateControl 构建界面元素后事件CreateMainMenu 构建菜单事件AfterCreateMainMenu 构建菜单后事件表单插件调用过程由控制器创建视图、模型、插件代理初始化视图、模型由插件服务注册到插件代理插件代理初始化插件加载数据,通知插件创建数据,创建表单数据包表单操作插件服务调用代理,发送事件通知插件代理调用插件,执行事件返回执行结果View对象属性this.View(View接口)this.View的常用属性BusinessInfo(界面业务对象元数据)LayoutInfo(布局元数据)Model(动态表单模型接口)OpenParameter(页面调用时传入的参数)方法GetFieldEditor (获取界面控件对象)UpdateView(重新更新界面数据及状态)ShowMessage(显示信息)更改界面控件状态this.View. GetFieldEditor示例:/// <summary>/// 设置金额列精度/// </summary>/// <param name="iScale"></param>/// <param name="strField"></param>private void SetColumnScale(short iScale, string strField){his.View.GetFieldEditor<DecimalFieldEditor>(strField, -1).Scale = iScale; }更新界面数据和状态this.View.UpdateView示例:/// <summary>/// 字段修改事件函数重载/// </summary>public override void DataChanged(DataChangedEventArgs e){switch (e.Key.ToUpper()){case "FPARENTDEPTID": //组织隶属方案和上级部门变化,重新生成部门全称this.Model.SetValue(“FFullName”, GetFullName(e.Key));this.View.UpdateView(“FFullName”);break;}}显示信息this.View.ShowMessage示例:if (e.CurParentId == "0"){this.View.ShowMessage(“请先选择顶层组织。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
P2
目录
K/3 BOS概述 K/3 BOS单据开发流程 K/3 BOS相关接口调用 K/3 BOS高级应用开发 K/3 BOS参考资料 Q/A
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P3
K/3 BOS 概述
K/3 BOS是什么?
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P6
K/3 BOS 技术框架
K/3 BOS 技术框架示意图
BOS 用户交互界面
数据库
BOS核心组件 功能引擎
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P7
K/3 BOS 业务对象
K/3 BOS 业务对象
业务对象
单据
单据体
报表
单据体 ICClassTypeEntry
-所属单据 -对应表格 -录入类型 -是否必录 -所在层 -外观eInfo
-对应单据 -对应单据体 -字段标示 -字段标签 -对应表格 -对应表格字段 -数据来源 -编辑类型 -数据类型 -外观属性 -编辑控制 -过滤控制
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P16
K/3 BOS 相关接口调用
示例
'打开序时簿 Set objLookup = CreateObject("K3ClassLookUp.BillLookUp") objLookup.ClassTypeID = oDatasrv.ClassTypeID Set objLookup.DataSrv = oDatasrv objLookup.Show
可手工修改,但必须满足字段来源于选单RecordSet
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P23
K/3 BOS 业务应用开发
单据转换流程
一些重要字段说明
➢ FConnectFlg vs FChildren ➢ FUsePage vs FDefaultPage ➢ FRemark 选单标识 ➢ FDefineType(ICClassActionList)选单值更新事件
表描述 ICClassType.FID ICClassType.FObjectType ICClassType. FObjectID ICClassType. FGroupIDView ICClassType.FGroupIDManager
ICClassMutex.FFuncID
ICClassType. FAccessoryTypeID
K/3 BOS 业务对象属性
K/3 BOS 业务对象的属性存储
单据 -基本属性 ICClassType -多级审核 ICClassMCFlowInfo -单据流程 ICClassLink
单据基本属性 ICClassType -事务类型ID -名称 -对应主表 -网络控制 -单据体集合 -外观 -保存规则 -日志 -关键字段设定 -权限对象
发工具
客户化开发平滑升级
➢ K/3 BOS的业务模型都存储与数据库中 ➢ K/3 升级新版本后, 客户开发也一起平滑升级 ➢ 业务模型可以直接引出为SQL文件 ➢ 客户化开发成果发布变的容易和可行
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P5
K/3 BOS 技术架构
K/3 BOS 技术架构
注:过滤条件 dctFilter
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P17
K/3 BOS 相关接口调用
基础资料接口
示例
Set obj = CreateObject("K3ClassLookUp.BillLookUp") obj.ClassTypeID = lClassTypeID Set obj.Filter = dct obj.ShowType = 1 'Enu_ShowType.Enu_Explore Set retVect = obj.Show Set obj = Nothing
K/3BOS开发流程及接口介绍
演讲人:高玉宏 金蝶软件(中国)有限公司
版权所有 ©1993-2009 金蝶软件(中国)有限公司
关于
本课程关注的问题
➢ BOS业务开发流程 ➢ BOS相关接口调用 ➢ BOS高级应用开发 ➢ BOS参考资料
本课程适宜对象
➢ K3设计人员 ➢ K3开发人员 ➢ K3项目外包人员
K/3 Business Operation System, K/3 业务操作系统
➢ 使用先进、开放、可伸缩的技术体系 ➢ 面向企业快速成长的业务需求 ➢ 协同合作伙伴拓展管理业务 ➢ 通过科学的工具和流程对企业建模进行全程监控
是金蝶BOS产品家族中的一员
➢ 专门针对金蝶K/3系列产品 ➢ 自主研发的新一代技术平台 ➢ 用以解决K/3系统日益增加的应用复杂度和快速开发与实施之间
P22
K/3 BOS 业务应用开发
单据转换流程
跨级反写
➢ 流程不要启用 ➢ 源单内码类字段要传递至目标单据
跨级携带
➢ 选单值更新Action定义 ➢ 源单内码类字段要传递至目标单据
支持源单计算列携带
➢ ICClassLinkEntry. FAfterFormula
注意:
➢ 跨级反写、跨级携带至少需要2套以上的源单内码类字段 ➢ 关于计算列: FAfterFormula = “Calculate{FQty3+FQty4}”,
单据接口
示例
Set oDatasrv = CreateObject("K3ClassTpl.DataSrv")
oDatasrv.ClassTypeID = lClassTypeID
Set obj = CreateObject("K3SingleClassBill.ClassInfoManager")
.ShowFilterForOldList = True
'是否显示过滤条件,默认显示
.ListShowStatus = 0
'显示状态:'0等于是普通进入,2表示选单
End With
strFilter = " v1.FBillNo='WIN000001' "
'过滤条件
Set obj= objLookup.LoadOldList(lListID, strFilter)
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P18
K/3 BOS 相关接口调用
老单序时簿接口
示例
Set objLookup = CreateObject("K3ClassLookUp.BillLookUp")
With objLookup
.CanSelectMultiRowForOldList = True '默认允许多选
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P20
K/3 BOS 高级应用开发
(一)单据流转
选单关联关系
➢ 复制 ➢ 关联复制 ➢ 钩稽 ➢ 强制钩稽
字段关联属性
➢ 修改 ➢ 计算列 ➢ 选单一致 ➢ 过滤 ➢ 处理选单值更新事件(Action:适用于选单值更新事件?) ➢ 仅复制
的矛盾 ➢ 集成了K/3产品底层的相关服务 ➢ 让客户在不需要任何编程知识的前提下,快速的定制新系统,功
能
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P4
K/3 BOS 概述
K/3 BOS用以解决什么问题?
快速开发与实施
➢ 快速开发、快速实施、快速应用 ➢ 为客户提供与K/3集成性、可升级性、高效性、简单易用性的开
Enu_BillStatus_New = 1‘新增
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P15
K/3 BOS 相关接口调用
序时簿接口
示例
Set oDatasrv = CreateObject("K3ClassTpl.DataSrv") oDatasrv.ClassTypeID = lClassTypeID If dctFilter Is Nothing Then
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P21
K/3 BOS 业务应用开发
单据转换流程
元数据模型
选单模板 工业单据 BOS单据
数据表 ICClassLink ICSelBills ICTableRelation ICWriteBackTemplate ICClassLink ICCLassLinkEntry ICClassLinkCommit
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P13
目录
K/3 BOS概述 K/3 BOS业务开发流程 K/3 BOS相关接口调用 K/3 BOS高级应用开发 K/3 BOS参考资料 Q/A?
版权所有 ©1993-2009 金蝶软件(中国)有限公司
P14
K/3 BOS 相关接口调用
选单插件事件
➢ AfterSelBill 事件 ➢ AfterSelBillBeforeFillData 事件 ➢ BeforeSelBills 事件 ➢ BeforeSelBillShowFilter 事件 ➢ AfterSelBillBeforeDoAction事件 ➢ AfterSelBillAfterDoAction事件
记录选单关联关系 记录选单关联明细 记录选单表关系 记录选单反写字段信息 记录选单关联关系 记录选单关联明细 记录选单反写字段信息
描述
注:
➢ 目标单据为工业单据, 采用老单选单模板 ➢ 目标单据为BOS单据,采用BOS选单模板 ➢ 选单条件:ICClassLink. FCodition字段?