K3BOS单据选单插件开发培训教材
- 格式:ppt
- 大小:1.08 MB
- 文档页数:17
架构模型动态表单领域模型插件开发步骤定义插件类(参照继承体系);分析业务定义重载方法;引用相关组件(参照组件引用规则);重载方法编码;设置编译路径,编译组件;打开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(“请先选择顶层组织。
金蝶 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中间层插件了。
BOS插件开发入门教程本文主要针对初学者,介绍BOS插件开发与制作的基本流程与步骤,为入门所用。
以一个简单的插件开发需求为例:比如想在新开发的BOS单据上,增加一个自定义菜单按钮,按钮标题为“My BOS MenuBarButton”,位置放在编辑菜单下的驳回审核按钮之后,在工具栏上的退出按钮之前;当点击该自定义按钮时弹出提示框“Hello,This Is My First BOS Bill InterFace!”。
针对此需求,让我们一起看看如何一步一步通过BOS插件来实现:【第一步】:由于插件是基于VB语言开发,首先需要在装有金蝶K3的环境下安装Microsoft Visual Basic 6.0(简称VB6.0)开发工具。
【第二步】:安装好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”菜单,如果还没出现需要再重启下电脑解决。
架构模型动态表单领域模型插件开发步骤定义插件类(参照继承体系);分析业务定义重载方法;引用相关组件(参照组件引用规则);重载方法编码;设置编译路径,编译组件;打开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(“请先选择顶层组织。
K/3 BOS 产品培训教案1 K/3 BOS IDE 练习案例 (2)1.1新建基础资料 (2)1.1.1新增基础资料交货地点 (2)1.2新建业务单据 (2)1.2.1新建寄存入库单,寄存入库单字段信息描述 (2)1.2.2练习值更新事件 (3)1.2.3练习操作事件定义 (3)1.2.4练习生成凭证 (3)1.2.5权限控制练习 (4)1.2.6修改老单据练习 (4)1.3定义多级审核流程 (4)1.4定义单据转换流程 (4)1.5报表练习 (6)1.6发布到主控台 (6)2 Bos 插件练习 (7)1 K/3 BOS IDE练习案例1.1新建基础资料i.i.i新增基础资料交货地点||在默认字段基础上加一备注类型的字段。
1.2新建业务单据1.2.1新建寄存入库单,寄存入库单字段信息描述1.2.2练习值更新事件II定义值更新事件-计算公式到指定的列,要求金额等于实收数量乘以单价,价税合计等于金额加上税额II定义值更新事件-表达式为真/假时显示/隐藏字段,要求当单据头上金额字段大于10000时,隐藏单据头备注字段定义值更新事件-单据状态栏显示当前物料即时库、安全库存信息,要求在物料的值发生变化后触发该事件123练习操作事件定义■ 在操作管理新增菜钮历史价格查询”,操作代码为mnuHistoryPriceQuery ”简体中文名称为历史价格查询”,设置操作场景为单据维护状态,单据操作事件为历史价格查询”1.2.4练习生成凭证在单据上增加凭证字字段在单据的属性窗口设置凭证取数来源II单据序事簿运行时,设置凭证模板。
125权限控制练习非财务组的人不能看到寄存入库单单据体上的金额、单价、价税合计字段财务组的人不能看到寄存入库单单据体上的数量字段126修改老单据练习在采购订单、收料通知单、采购检验申请单上加一个字段标记是否寄存业务1.3定义多级审核流程在寄存入库单上新增多级审核流程,多级审核级次为3,业务审核级次为3I练习消息配置,开始审核级次为启动审核,结束审核级次为启动审核,主题为”寄存入库单启动审核”,消息接受用户为administrator、ceo练习条件跳转,当单据头金额小于10000时,一级审核就直接到审核结束1.4定义单据转换流程|在采购订单、收料通知单、采购检验申请单上加一个字段标记是否寄存业务新建单据转换流程,选择寄存入库单、收料通知单、采购检验申请单、外购入库单, 具体设置见如下:收料通知单下推寄存入库单关联字段设置练习选单一致选项,当收料通知单或采购检验申请单下推寄存入库单时必须部门和供应商一致练习如何在数据库中给单据转换流程设条件,要求寄存入库单下推到外购入库单时必须已经审核,且未关联完毕;收料通知单或采购检验申请单下推寄存入库单时必须已审核,是否寄存属性不等于0,且未关联完毕。