K BOS插件开发产品培训.ppt_第1页
K BOS插件开发产品培训.ppt_第2页
K BOS插件开发产品培训.ppt_第3页
K BOS插件开发产品培训.ppt_第4页
K BOS插件开发产品培训.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

K/3BOS插件开发培训,演讲人:李望中金蝶软件(中国)有限公司,提纲,插件开发概述案例介绍插件开发基础插件开发向导数据结构K3ClassEvents业务对象接口BillEvent单据接口ListEvents序事簿接口BaseClassEvent基础资料序事簿接口K3ClassEvents公用对象K3Lib常用元数据表结构,为什么要用插件完成当前版本无法用K/3BOS标准功能实现的需求,插件原理图如下插件的作用实现单据、序时簿、基础资料序时簿中特殊的业务流程处理中间层数据改变时的特殊处理规则个性化的菜单、外观定制;增加自定义的菜单并响应其操作对审核、消息流程的自定义控制,插件开发概述,插件开发环境金蝶K/3v10.1以上的版本必选安装客户端、K/3BOS,推荐同时安装中间层MicrosoftVisualBasic推荐使用vb6.0版本,并且安装SP5MicrosoftWindows2000Server以上版本推荐采用Server类操作系统作为开发、调试操作系统注意:如果要使用“金蝶K/3BOS插件开发向导”工具,需要采用简体中文操作系统MicrosoftSQLServer2000数据库,插件开发概述-开发环境介绍,提纲,插件开发概述案例介绍插件开发基础插件开发向导数据结构K3ClassEvents业务对象接口BillEvent单据接口ListEvents序事簿接口BaseClassEvent基础资料序事簿接口K3ClassEvents公用对象K3Lib常用元数据表结构,ABC公司主营业务是生产和销售各种高档卫浴五金、水暖器材等。拥有五个厂区,产品外销欧美、日本等国家和地区,为了统一物流管理,解决重复请购、资金占用严重的问题,ABC公司提出了寄存仓的管理模式,与供应商之间通过统一窗口来管理供应商将物料寄存到ABC公司指定的物流中心仓库,但所有权属供应商ABC公司根据生产实际需求从物流中心领料并进行相应的结算处理,案例分析,解决方案,演示案例插件开发需求(一),单据定义寄存入库单新增时默认为2000行在寄存入库单单据上增加复制按钮的浮动按钮,隐藏“页面设置”菜单在寄存入库单序事簿上增加单据变更的菜单及按钮以插件中附带的图片资源文件增加单据变更的显示当单据头金额大于10000时,锁定单据头备注字段当前登录用户只能看到本人制作的寄存入库单寄存入库单新增时给表体赋一行默认值多级审核多级审核业务审核完后仍可修改单据头备注字段单据转换流程寄存入库单下推外购入库单时所选单据部门必须相同,提纲,插件开发概述案例介绍插件开发基础插件开发向导数据结构K3ClassEvents业务对象接口BillEvent单据接口ListEvents序事簿接口BaseClassEvent基础资料序事簿接口K3ClassEvents公用对象K3Lib常用元数据表结构,插件开发基础插件开发向导,KFOK/3BOS中传递数据,主要使用了KFO的2个对象关于KFO对象的详细使用,请参考KFO参考手册Vector对象相当于一个一维数组,可以说它是一个不定长且可以是任意数据类型的数组,同样可以通过存取数组元素值进行数据传递,一个元素值可以是RecordSet,也可以是一个任意一个数据或对象Dictionary对象是一个数据字典,字典里可以存放不同的变量,可以给字典里这些变量赋值,或从字典里取出这些变量的值进行数据传递,它可以是任一个变量,也可以是一个对象。在Dictionary对象中主要通过变量名称来进行索引,插件开发基础数据结构,两个关键的数据包dctDataBillEvent:PropertyDataListEvents:EventAfterCopyBillCreateData(srcInterIDAsLong,dctDataAsDictionary)dctTableInfoBillEvent:PropertyTableInfoListEvents:PropertyDataSrv.TableInfoBaseClassEvent:PropertyDataSrv.TableInfo,插件开发基础业务数据包和单据字典包,插件开发基础业务数据包,dctData包含这个单据对象的详细数据每一个Page对应一个数据对象,如果这个Page是单表或者表头,那么这个数据对象是一个字典,否则这个数据对象就是一个Vector,而Vector的每一个子项均为一个字典每一个数据对象字典包含了这一个页面上数据总和,他的每一个Item均为一个字典(这个字典是最明细的)最明细的数据字典包含五个域:FFLD=FFLD肯定都有FDSP=FDSP查找关联类型才有FFND=FFND查找关联类型才有FOLD=FOLD修改单据时才有FMODIFY=FMODIFY修改单据后时才有五个域,插件开发基础业务数据包,插件开发基础如何访问dctData包(一),插件开发基础如何访问dctData包(二),读取单据头审核日期的值可用以下两种方式:m_billinterface.data(“page1”)(m_billinterface.tableinfo(“map”)(“FCheckDate”)(“FFLD”)m_billinterface.bosheads(1).bosfields(“FCheckDate”).value读取单据体第一行应收数量的值可用以下两种方式:m_billinterface.data(“page2”)(1)(m_billinterface.tableinfo(“map”)(“FMustQty”)(“FFLD”)DimobjasbosfieldDimtmpasdoubleSetobj=m_billinterface.billentrys(1).bosfields(“fmustqty”)Obj.row=1;tmp=obj.value,插件开发基础数据字典包,dctTableInfo包含三部份内容所有Item的详细信息,以字典的形式保存,采用Key去查询这个Key是用FTabIndex+Fkey格式化而成所有Page的信息,每一个Page是一个字典包含了这一个Page上组成项的Key这个单据对象的所有Item的Map映射,这是一个字典,提纲,插件开发概述案例介绍插件开发基础插件开发向导数据结构K3ClassEvents业务对象接口BillEvent单据接口ListEvents序事簿接口BaseClassEvent基础资料序事簿接口K3ClassEvents公用对象K3Lib常用元数据表结构,插件对象模型(BillEvent),K3ClassEventsBillEvent单据接口ListEvents序事簿接口BaseClassEvent基础资料序事簿接口,BillEvent对象,BillEvent对象MenuBar概述BOSBands和BOSBand对象BOSTools和BOSTool对象单据基础对象BillHeads和BillEntrysBOSFields单据接口事件函数、方法属性,概述,BOSBands、BOSTools对象是PublicNotCreatable对象在BillEvent、ListEvents、BaseClassEvent对象中包含MenuBar属性使用。例如:DimoMenuBarAsK3ClassEvents.MenuBarSetoMenuBar=BillEventObject.Menubar在BillEvent、ListEvents、BaseClassEvent对象新增事件SubMenuBarInitialize(ByValoMenuBarAsK3ClassEvents.MenuBar)SubMenuBarClick(ByValBOSToolAsK3ClassEvents.BOSTool,CancelAsBoolean),BOSBands和BOSBand对象,基本和ActiveBar的Bands、Band对象属性、方法一致BOSBands不能使用ForEach方法遍历BOSBand对象可以通过Add方法来新建BOSBand对象。,BOSTools和BOSTool对象,基本和ActiveBar的Tools、Tool对象属性、方法一致BOSTools不能使用ForEach方法遍历BOSTool对象可以通过Add方法来新建BOSTool对象,BOSTools方法详解,FunctionAdd(ToolNameAsString)AsBOSTool与ActiveBar的Tools的Add相比可以在任何的BOSTools对象中调用不需要考虑ToolID重复的问题SubInsertBefore(Index,oToolAsBOSTool)Index可以是数字,以表示当前BOSBand上的BOSTool的顺序(与ActiveBar中的方法一致)也可以是一个BOSTool的Name(字符串)SubInsertAfter(Index,oToolAsBOSTool)新增方法,特性与上相同,练习,在寄存入库单单据上增加复制按钮的浮动按钮,隐藏“页面设置”菜单在寄存入库单序事簿上增加单据变更的菜单及按钮以插件中附带的图片资源文件增加单据变更的显示,BillEvent对象,BillEvent对象MenuBar概述BOSBands和BOSBand对象BOSTools和BOSTool对象单据基础对象BillHeads和BillEntrysBOSFields单据接口事件函数、方法属性,概述,是PublicNotCreatable对象在BillEvent对象中包含使用。例如:DimoHeadAsK3ClassEvents.BillHeadSetoHead=BillEventObject.BillHeads(1)BillHeads、BillEntrys、BOSFields不能使用ForEach方法遍历对象,BillEntrys对象,BillEntrys对象包含了和单据体相关的属性通过这些属性可以在运行时操作单据体,BOSFields和BOSField对象,BOSField对象每个字段对象,对应单据(包括单据头和单据体)上的每一个字段通过这些属性,可以在运行时操作字段。,属性集,BOSField属性详解,某些属性值只适用于单据头中的字段FieldTopFieldLeftFieldHeightFieldWidthLabelWidthLabelColorFrameBorderColorFrameBorderFontNameFontSizeFontBoldFontItalicTextColor某些两者都支持TableNameFieldNameCaptionPageLayerFKeyVisibleNeedSaveMustInputFieldLockNote某些只适用于特殊的字段Row仅支持多分录单据体Filter仅支持基础资料字段,BOSField属性详解,Visible:字段显示/隐藏属性,只有设计时没有设计为“可见”状态的字段,才可以在运行时更改可见性状态FieldLock:只有设计时没有设计为“锁定”状态的字段,才可以在运行时更改锁定状态Value:得到字段内码值。即保存在数据库中的值Number:得到字段查找类型字段查找值Text:得到字段显示值。即显示在界面的值,不支持通过该属性直接赋值。Value:得到/设置字段非查找类型字段赋值使用Number:得到/设置字段查找类型字段赋值使用,练习,通过插件实现寄存入库单新增时默认表体行数为2000行,主要练习BillEntry对象的Maxrows属性通过插件实现当单据头金额大于10000时,锁定单据头备注字段,主要练习单据Change事件,BosField对象的FieldLock属性,BillEvent对象,BillEvent对象MenuBar概述BOSBands和BOSBand对象BOSTools和BOSTool对象单据基础对象BillHeads和BillEntrysBOSFields单据接口事件函数、方法属性,事件EventMenuBarInitialize(oMenuBarAsMenuBar)说明:该事件在菜单、工具栏初始化时发生。EventMenuBarClick(BOSToolAsBOSTool,CancelAsBoolean)说明:该事件在点击菜单、工具栏项时发生。EventAfterNewBill()说明:新建单据对象后发生。EventAfterLoadBill()说明:单据对象加载完成后发生。EventAfterCopyBill()说明:复制单据后发生EventAfterSelBill(lSelBillTypeAsLong)说明:选单操作完成后发生。EventBeforeVerify(bCancelAsBoolean)说明:单据对象保存前、系统进行校验操作前发生。EventChange(dctAsDictionary,dctFldAsDictionary,ColAsLong,RowAsLong,CancelAsBoolean)说明:单据对象上的字段值发生改变时发生。,BillEvent对象-事件,方法FunctionGetFieldValue(sKeyAsString,nRowAsLong=-1,ValueTypeAsEnu_ValueType=Enu_ValueType_FFLD)说明:用于返回字段的值。FunctionSetFieldValue(sKeyAsString,vValue,nRowAsLong=-1)AsBoolean说明:用于设置字段的值。FunctionInsertNewRowAndFill(nPageAsLong,nRowAsLong,ParamArrayvFieldsData()AsVariant)AsBoolean说明:在多分录单据体中插入一个新行,并填充数据。FunctionGetDataFld(dctAsDictionary,RowAsLong)AsDictionary说明:获得单据指定字段的值的对象。FunctionGetFieldInfoByKey(sKeyAsString,sPKeyAsString,lIndexAsLong)AsDictionary说明:通过给定的字段的关键名称获得字段的模版的对象。FunctionRefreshBill()说明:刷新当前单据对象。FunctionIsChange()AsBoolean说明:判断单据对象是否被改变。FunctionDeleteEntryData(nPageAsLong)AsBoolean说明:删除单据对象指定单据体分录内全部数据。,BillEvent对象-函数、方法,BillEvent对象-属性,练习,通过插件实现当寄存入库单业务审核后仍可修改单据头备注字段,主要练习单据Afterload事件,单据方法SetBarStatus、SetBillFormCaption通过插件实现寄存入库单新增时给表体赋一行值,物料代码为”01.001”,应收数量为100,实收数量为100,单价为1500。主要练习Insertnewrowandfill方法,插件对象模型(ListEvents),K3ClassEventsBillEvent单据接口ListEvents序事簿接口BaseClassEvent基础资料序事簿接口,ListEvents对象,ListEvents对象事件函数、方法属性,ListEvents对象-事件,EventMenuBarInitialize(oMenuBarAsMenuBar)说明:菜单、工具栏初始化时发生。EventMenuBarClick(BOSToolAsBOSTool,CancelAsBoolean)说明:点击菜单、工具栏项时发生。EventAfterCopyBillCreateData(srcInterIDAsLong,dctDataAsDictionary)说明:复制已选择的单据数据到新单据,但新单据尚未保存时发生。EventAfterDeleteBill(bSuccessAsBoolean,lBillInterIDAsLong,sBillNoAsString,sErrorMessageAsString,bCancelErrorMessageAsBoolean)说明:删除已选择的单据后发生。EventListFillRow(lRowAsLong,RowDataAsObject,HeadDictAsDictionary,CellDataAsString,BackColorAsLong,ContinueRaiseAsBoolean)说明:序时簿的行填充数据时发生。,ListEvents对象-方法,FunctionGetDataFld(dctAsDictionary,RowAsLong=-1)AsDictionary说明:获得单据指定字段的值的对象。FunctionGetDataFldbyKey(sFKeyAsString,RowAsLong=-1)AsDictionary说明:通过字段关键名称获取字段的值的对象。FunctionGetSelectedBillInfo()AsVector说明:获取当前选中的单据的数据。FunctionLoadSelectedBill(BillStatusAsEnu_BillStatusExt)AsBoolean说明:加载当前选择的单据,并按照指定的状态显示。,ListEvents对象-属性,ListFilterString说明:序事簿运行时设置过滤条件,练习,通过插件实现当寄存入库单业务审核后仍可修改单据头备注字段,主要练习序事簿方法LoadSelectedBill通过插件实现当前登录用户只能看到本人制作的寄存入库单,主要练习序事簿ListFilterString属性,插件对象模型(BaseClassEvent),K3ClassEventsBillEvent单据接口ListEvents序事簿接口BaseClassEvent基础资料序事簿接口,对象-BaseClassEvent,BaseClassEvent对象事件函数、方法属性,BaseClassEvent对象-事件,EventMenuBarInitialize(oMenuBarAsMenuBar)说明:菜单、工具栏初始化时发生。EventMenuBarClick(BOSToolAsBOSTool,CancelAsBoolean)说明:点击菜单、工具栏项时发生。EventRefreshList()说明:序时簿刷新时发生。EventListFillRow(lRowAsLong,RowDataAsObject,HeadDictAsDictionary,CellDataAsString,BackColorAsLong,ContinueRaiseAsBoolean)说明:序时簿的行填充数据时发生。EventClassGroupSelected(ButtonAsLong,ClassGroupTypeAsLong,ClassGroupIDAsLong,ClassGroupFullNumberAsString)说明:选择基础资料分组时发生。,BaseClassEvent对象-方法、属性,方法FunctionSelectClassGroupByID(lClassGroupIDAsLong)AsLong说明:按照指定的基础资料分组的ID定位显示。FunctionPitchItemByID(lItemIDAsLong)AsBoolean说明:按照指定的基础资料明细的ID定位显示。SubRefreshClassGroups()说明:刷新所有基础资料分组数据。FunctionGetSelectedClassID()AsLong说明:返回当前选择的基础资料分组的ID。FunctionGetSelectedItemID()AsLong说明:返回当前选择的基础资料明细的ID。属性EnableListFillRowEventsAsBoolean说明:是允许否触发插件的序时簿FillRow事件。默认为False,即不触发。只有当此值为True且发生序时簿行填充时,才会触发插件的序时簿FillRow事件。,提纲,插件开发概述案例介绍插件开发基础插件开发向导数据结构K3ClassEvents业务对象接口BillEvent单据接口ListEvents序事簿接口BaseClassEvent基础资料序事簿接口K3ClassEvents公用对象K3Lib常用元数据表结构,概述,是PublicNotCreatable对象在BillEvent、ListEvents、BaseClassEvent对象中包含K3Lib对象使用。例如:DimoK3AsK3ClassEvents.K3LibSetoK3=BillEventObject.K3Lib也可直接使用:lUserID=BillEventObject.K3Lib.User.UserID,方法集,FunctionLoadKDString(strGBTextAsString,ResourceFileAsString)AsString根据K3的语言,从指定的K3语言资源包中返回多语言化的资源可以通过ResourceFile参数指定多语言资源包。默认使用BOS的语言资源包FunctionGetData(SQLCodeAsString)AsObject通过SQL语句从中间层访问数据库,返回数据。返回值是ADODB.Recordset类型SubUpdateData(SQLCode)通过SQL语句从中间层访问数据库,更新数据参数SQLCode可以是String(单条SQL语句),也可以是String()(多条SQL语句)FunctionCreateK3Object(ClassStringAsString)AsObject通过这个函数在插件中创建K/3的对象,使得插件可以单独调试,练习,通过插件实现寄存入库单下推外购入库单时所选单据部门

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论