金蝶K3 BOS进阶培训-插件开发.ppt_第1页
金蝶K3 BOS进阶培训-插件开发.ppt_第2页
金蝶K3 BOS进阶培训-插件开发.ppt_第3页
金蝶K3 BOS进阶培训-插件开发.ppt_第4页
金蝶K3 BOS进阶培训-插件开发.ppt_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

K/3BOS进阶培训插件开发,常州金蝶软件,插件开发概述插件开发基础使用数据包开发插件其它,提纲,插件的作用实现单据、序时簿、基础资料序时簿中特殊的业务流程处理中间层数据改变时的特殊处理规则个性化的菜单、外观定制;增加自定义的菜单并响应其操作对审核、消息流程的自定义控制.完成无法通过K/3BOS标准功能实现的个性化需求,作用,插件开发环境金蝶K/3v11必选安装客户端、K/3BOS,推荐同时安装中间层MicrosoftVisualBasic推荐使用v6.0版本,并且安装SP5MicrosoftWindows2000Server(及以上版本)推荐采用Server类操作系统作为开发、调试操作系统注意:如果要使用“金蝶K/3-BOS插件开发向导”工具,需要采用简体中文操作系统MicrosoftSQLServer2000数据库,开发环境,插件开发注意事项合理的单据设计和流程设计尽量使用BOS的内部逻辑携带当前字段相关基础资料属性到指定列计算定义公式的值并填写到指定列计量单位变化后自动换算数量或单价物料为非批号管理时锁定批号对应列根据物料上数量单价精度设置数量单价精度表达式为真/假时显示/隐藏字段表达式为真/假时锁定/解锁字段单据合法性校验单据被引用后锁定字段条件成立时锁定菜单项,否则解锁菜单项合法性检查,检查字段唯一性,注意事项,总体模型,接口对象BillEvent单据接口ListEvents序时簿接口BaseClassEvent基础资料序时簿辅助对象K3LibNetUserAccount与金蝶K/3交互MenuBarBOSBandsBOSBandBOSToolsBOSTool新增、修改菜单和工具栏BillHeadsBillHeadBillEntrysBillEntryBOSFieldsBOSField单据、单据头、单据体、单据字段操作,插件开发概述插件开发基础使用数据包开发插件其它,提纲,插件开发向导,VBAddin快速构建客户端单据插件客户端序时簿插件中间层插件功能修改BOS默认菜单新增菜单处理事件标记函数、事件、方法查询,注册文件,VB注册BOS插件向导方法WindowsRegistryEditorVersion5.00HKEY_CURRENT_USERSoftwareMicrosoftVisualBasic6.0AddinsK3BOSPLUGINSADDIN.ConnectFriendlyName=K/3BOSPlugInsMakerVBAddInDescription=K/3BOSPlugInsMakerVBAddInLoadBehavior=dword:00000003CommandLineSafe=dword:00000000,插件开发向导,演示,MenuBar,MenuBar、BOSBands、BOSBand、BOSTools、BOSTool类似于ActiveBar对象的结构,MenuBar是PublicNotCreatable对象在BillEvent、ListEvents、BaseClassEvent对象中包含MenuBar属性使用。例如:DimoMenuBarAsK3ClassEvents.MenuBarSetoMenuBar=BillEventObject.Menubar在BillEvent、ListEvents、BaseClassEvent对象新增事件SubMenuBarInitialize(ByValoMenuBarAsK3ClassEvents.MenuBar)SubMenuBarClick(ByValBOSToolAsK3ClassEvents.BOSTool,CancelAsBoolean),MenuBar,BOSBandsBOSBand,基本和ActiveBar的Bands、Band对象属性、方法一致BOSBands不能使用ForEach方法遍历BOSBand对象可以通过Add方法来新建BOSBand对象。,BOSToolsBOSTool,基本和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)新增方法,特性与上相同,BOSTool重点,如何给菜单添加图标方法1先使用ToolPicture属性指定一个图标的路径再调用SetPicture(IndexAsLong,MaskColorAsLong)方法Index代表了0-Normal,1-Pressed,2-MouseHover,3-Disabled方法2先调用Clipboard.SetData方法将图片复制到剪贴板再调用PasteToolFace(IndexAsLong,MaskColorAsLong)方法,练习,在检斤单中添加“皮重”和“毛重”。隐藏“插入一行”、“删除一行”和复制行更改mnuDataLookUp的标题为“查看”,K3Lib,是PublicNotCreatable对象在BillEvent、ListEvents、BaseClassEvent对象中包含K3Lib属性使用。例如:DimoK3AsK3ClassEvents.K3LibSetoK3=BillEventObject.K3Lib也可直接使用,如:lUserID=BillEventObject.K3Lib.User.ID,K3Lib重点,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的对象,使得插件可以单独调试,练习,GetDataUpdateData多条SQLCreateK3Object创建K3组件K3ClassTpl.DataSrv,BillHeads、BillEntrys,是PublicNotCreatable对象在BillEvent对象中包含使用。例如:DimoHeadAsK3ClassEvents.BillHeadSetoHead=BillEventObject.BillHeads(1)BillHeads、BillEntrys、BOSFields不能使用ForEach方法遍历对象,BillEntrysBillEntry,单据体对象包含了和单据体相关的属性通过这些属性可以在运行时操作单据体重要属性MaxRowsAsLong可以在运行时调整单据体行数(大于1且小于2000),BillHeadsBillHead,单据头对象V10.3及以前版本只提供1个单据头计划在以后的版本支持多单据头注意事项为了保证在以后版本的升级中便于维护,建议在访问单据头对象前还是先访问Count属性,BOSFieldsBOSField,字段对象每个字段对象,对应单据(包括单据头和单据体)上的每一个字段通过这些属性,可以在运行时操作字段。,BOSField1,注意某些属性值只适用于单据头中的字段FieldTopFieldLeftFieldHeightFieldWidthLabelWidthLabelColorFrameBorderColorFrameBorderFontNameFontSizeFontBoldFontItalicTextColor某些2者都支持TableNameFieldNameCaptionPageLayerFKeyVisibleNeedSaveMustInputFieldLockNote某些只适用于特殊的字段Row仅支持多分录单据体Filter仅支持基础资料字段,BOSField2,注意Visible只有设计时没有设计为“锁定”状态的字段,才可以在运行时更改锁定状态FieldLock只有设计时没有设计为“锁定”状态的字段,才可以在运行时更改锁定状态有些值是取的运行时字段的状态,可能与字段包中相关属性值不同,BOSField3,取值和赋值通过以下属性取值Value内码值。即保存在数据库中的值Number查找类型字段查找值Text显示值。即显示在界面的值通过以下属性赋值Value非查找类型字段赋值使用Number查找类型字段赋值使用赋值包含字典包和界面同时更新,练习,通过BOSField对象更改Caption通过MaxRows方法更改BOS采购入库单的分录数在检斤单中单击毛重时隐藏皮重;单击皮重时隐藏毛重,BillEventListEventsBaseClassEvent,获得对象实例的方法:,BillEventListEventsBaseClassEvent,也可以在同一个类中实现,BillEvent常用事件、方法,事件EventMenuBarInitialize(oMenuBarAsMenuBar)EventMenuBarClick(BOSToolAsBOSTool,CancelAsBoolean)EventAfterNewBill()EventAfterLoadBill()EventAfterCopyBill()EventAfterSelBill(lSelBillTypeAsLong)EventBeforeVerify(bCancelAsBoolean)EventChange(dctAsDictionary,dctFldAsDictionary,ColAsLong,RowAsLong,CancelAsBoolean)方法FunctionGetFieldValue(sKeyAsString,nRowAsLong=-1,ValueTypeAsEnu_ValueType=Enu_ValueType_FFLD)FunctionSetFieldValue(sKeyAsString,vValue,nRowAsLong=-1)AsBooleanFunctionInsertNewRowAndFill(nPageAsLong,nRowAsLong,ParamArrayvFieldsData()AsVariant)AsBooleanFunctionGetDataFld(dctAsDictionary,RowAsLong)AsDictionaryFunctionGetFieldInfoByKey(sKeyAsString,sPKeyAsString,lIndexAsLong)AsDictionaryFunctionRefreshBill()FunctionIsChange()AsBooleanFunctionDeleteEntryData(nPageAsLong)AsBoolean,BillEvent重要的方法,重要的方法FunctionSetFieldValue(sKeyAsString,vValue,nRowAsLong=-1)AsBooleanFunctionGetFieldValue(sKeyAsString,nRowAsLong=-1,ValueTypeAsEnu_ValueType=Enu_ValueType_FFLD)SubSetBillFormCaption(sCaptionAsString)FunctionInsertNewRowAndFill(nPageAsLong,nRowAsLong,ParamArrayvFieldsData()AsVariant)AsBoolean,直接访问单据属性,BillEvent属性(单据相关属性),*不用访问数据包,更快捷,ListEvents常用事件、方法,事件EventMenuBarInitialize(oMenuBarAsMenuBar)EventMenuBarClick(BOSToolAsBOSTool,CancelAsBoolean)EventAfterCopyBillCreateData(srcInterIDAsLong,dctDataAsDictionary)EventListRowSelected(ByVallRowAsLong)EventAfterDeleteBill(bSuccessAsBoolean,lBillInterIDAsLong,sBillNoAsString,sErrorMessageAsString,bCancelErrorMessageAsBoolean)EventAfterMultiCheck、AfterUnMultiCheck、BusinessCheck、UnMultiCheckEventListFillRow(lRowAsLong,RowDataAsObject,HeadDictAsDictionary,CellDataAsString,BackColorAsLong,ContinueRaiseAsBoolean)方法FunctionGetDataFld(dctAsDictionary,RowAsLong=-1)AsDictionaryFunctionGetDataFldbyKey(sFKeyAsString,RowAsLong=-1)AsDictionaryFunctionGetSelectedBillInfo()AsVectorFunctionGetCurrentSelRowInfo()AsDictionary,10.2新增的事件和属性,事件EventListFillRow(lRowAsLong,RowDataAsObject,HeadDictAsDictionary,CellDataAsString,BackColorAsLong,ContinueRaiseAsBoolean)序时簿的行填充事件实际上每个行的每个可见的单元格(字段)的填充都会激发参数:lRowAsLong行号RowDataAsObject本行所有数据的RecoderSet对象HeadDictAsKFO.IDictionary当前单元格(字段)的信息CellDataAsString当前单元格数据。更改此值可以改变单元格的填充值BackColorAsLong当前行的背景色。更改此值可以改变本行的背景色。可以使用RGB函数得到色值ContinueRaiseAsBoolean在下一行该单元格填充的时候是否激发ListFillRow事件。默认为True。更改此值为False,则下一行这个单元格填充的时候不会再激发ListFillRow事件。属性EnableListFillRowEventsAsBooleanListFillRow事件开关默认为False,即不激发ListFillRow事件,BaseClassEvent常用事件、方法,事件EventMenuBarInitialize(oMenuBarAsMenuBar)EventMenuBarClick(BOSToolAsBOSTool,CancelAsBoolean)EventRefreshList()EventListFillRow(lRowAsLong,RowDataAsObject,HeadDictAsDictionary,CellDataAsString,BackColorAsLong,ContinueRaiseAsBoolean)EventClassGroupSelected(ButtonAsLong,ClassGroupTypeAsLong,ClassGroupIDAsLong,ClassGroupFullNumberAsString)方法FunctionSelectClassGroupByID(lClassGroupIDAsLong)AsLongFunctionPitchItemByID(lItemIDAsLong)AsBooleanSubRefreshClassGroups()FunctionGetSelectedClassID()AsLongFunctionGetSelectedItemID()AsLong,练习,InsertNewRowAndFill下拉框使用此方法无效SetFieldValue检斤单中检斤类型由选单决定,如选采购入库单,检斤类型为入库。GetFieldValueChang事件,/*/*描述:单据保存后扩展处理方法/*参数:/*dctClassTypeKFO.Dictionary单据整体信息模板/*dctDataKFO.Dictionary单据数据包dctData(FID)为保存后的单据内码/*dctLinkKFO.Dictionary选单关系模板,无选单为Nothing/*dctTableInfoKFO.Dictionary单据字段模板信息/*sDsnStringK/3标准数据库连接串/*vctClassTypeEntryKFO.Vector单据体模板信息/*备注:可以将该单触发器处理的过程在此函数中处理/*/PublicFunctionBeforeSave(byvalsDsnasstring,_byvaldctClassTypeaskfo.dictionary,_byvalvctClassTypeEntryaskfo.vector,_byvaldctTableInfoaskfo.dictionary,_byvaldctDataaskfo.dictionary,_byvaldctLinkaskfo.dictionary),单据插件-中间层数据保存前的处理,/*/*描述:单据保存后扩展处理方法/*参数:/*dctClassTypeKFO.Dictionary单据整体信息模板/*dctDataKFO.Dictionary单据数据包dctData(FID)为保存后的单据内码/*dctLinkKFO.Dictionary选单关系模板,无选单为Nothing/*dctTableInfoKFO.Dictionary单据字段模板信息/*sDsnStringK/3标准数据库连接串/*vctClassTypeEntryKFO.Vector单据体模板信息/*备注:可以将该单触发器处理的过程在此函数中处理/*/PublicFunctionAfterSave(byvalsDsnasstring,_byvaldctClassTypeaskfo.dictionary,_byvalvctClassTypeEntryaskfo.vector,_byvaldctTableInfoaskfo.dictionary,_byvaldctDataaskfo.dictionary,_byvaldctLinkaskfo.dictionary),单据插件-中间层数据保存后的处理,/*/*描述:单据删除后扩展处理方法/*参数:/*sDsnStringK/3标准数据库连接串/*nClassIDClassTypeID/*dctClassTypeKFO.Dictionary单据整体信息模板/*nInterID传递本次需要删除的ID/*备注:只提供删除表头或者是多分录的表体,不支持单分录表体删除,如果是单分录表体请直接按照表头删除/*/PublicFunctionBeforeDel(ByValsDsnAsString,_ByValnClassIDAsLong,_ByValdctClassTypeAsKFO.Dictionary,_ByValnInterIDAsLong)AsString,单据插件-中间层数据删除前的处理,/*/*描述:单据删除后扩展处理方法/*参数:/*sDsnStringK/3标准数据库连接串/*nClassIDClassTypeID/*dctClassTypeKFO.Dictionary单据整体信息模板/*nInterID传递本次需要删除的ID/*备注:只提供删除表头或者是多分录的表体,不支持单分录表体删除,如果是单分录表体请直接按照表头删除/*/PublicFunctionAfterDel(ByValsDsnAsString,_ByValnClassIDAsLong,_ByValdctClassTypeAsKFO.Dictionary,_ByValnInterIDAsLong)AsString,单据插件-中间层数据删除后的处理,插件开发概述插件开发基础使用数据包开发插件其它,提纲,KFOK/3BOS中传递数据,主要使用了KFO的2个对象完成关于KFO对象的详细使用,请参考KFO参考手册Vector对象相当于一个一维数组,可以说它是一个不定长且可以是任意数据类型的数组,同样可以通过存

温馨提示

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

评论

0/150

提交评论