金蝶K3 BOS插件开发手册
- 格式:pdf
- 大小:3.41 MB
- 文档页数:287
金蝶 K/3 BOS V10.1插件开发指导手册金蝶软件(中国)有限公司2004.9目录打个小广告:金蝶二次开发技术交流QQ群①群 30121062 已满②群 28307002 未满③群待定大家共同学习共同进步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点特征。
金蝶 K/3 BOS V10.1插件开发指导手册金蝶软件(中国)有限公司2004.9目录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中间层插件了。
用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集成开发工具的单据中引用即可。
1、如何在工具栏上添加多级审核的按钮?在m_BillInterface_MenuBarInitialize 事件里添加如下代码即可.Set oTool = m_BillInterface.MenuBar.BOST001s("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 '添力口至U 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 , , , dctData End With3、如何在插件中实现选单的功能?调用Bos单据m_BillInterface.BillCtl.DoSelBill lClassTypeID'( 原单的ClassTypeID)调用工业单据m_BillInterface.BillCtl.DoSe101dBill lClassTypeID '( 原单的ClassTypeID)4、在插件中以新增、修改和查看方式翻开另一单据,********************************************’功能:显示B0环据,显示的方式为新增、修改和浏览'参数:lClassTypeID 一显示B0环据的ID ' '********************************************Private Sub ShowBill(ByVal lClassTypeID As Long)Dim oDataSrv As ObjectDim oBill As ObjectOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK/30bject("K3ClassTpl.DataSrv") oDataSrv.ClassTypeID = lClassTypeIDSet oBill = CreateObject("K3SingleClassBill.ClassInfoManager") With oBill.DataSrv = oDataSrv.ISNetControl = True.I SCheckRight = 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 Sub err_ctr:Set oDataSrv = Nothing Set oBill = NothingEnd Sub5、显示BOS序时簿并返回选中的值,********************************************’功能:显示BO时时簿并返回选中的值'参数:lClassTypeID 一显示BO环据的ID ' '********************************************Private Function ShowListByReturn(ByVal lClassTypeID As Long) As Object Dim oDataSrv As Object Dim objLookup As ObjectOn Error GoTo err_ctrSet oDataSrv = m_BillInterface.K3Lib.CreateK3Object("K3ClassTpl.DataSrv")oDataSrv.ClassTypeID = lClassTypeID If oDataSrv.showfilter ThenSet objLookup = CreateObject("K3ClassLookUp.BillLookUp") objLookup.ClassTypeID = lClassTypeID Set objLookup.DataSrv = oDataSrvobjLookup.LookupSet ShowListByReturn = objLookup.VectReturnEnd IfSet oDataSrv = NothingSet objLookup = NothingExit Function err_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 一显示BO环据的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 Suberrctr: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、使用此方法时插件要添加MMTS8、如何在插件中获取当前系统字符连接串?一、连接串获取方式:(注意不支持调试,调试的话可以用实际连接串代替)Private Declare Function GetCurrentProcessId Lib "kernel32" Alias "GetCurrentProcessID"() As Long ’获取连接串Public Function GetPropsString() As StringDim lProc As LongDim spmMgr As ObjectIProc = GetCurrentProcessIdSet spmMgr = CreateObject("PropsMgr.ShareProps")GetPropsString = spmMgr.GetProperty(lProc, "PropsString")End Function.、需要申请MMTS.bas的源彳弋码,还需要申请ICKDListener的接口.另外,如果需要调试程序,就还需要申请KDMain的源代码.。
金蝶K3插件编程6.1 插件编程概述K/3运行平台为K/3 BOS开发的业务单据提供了稳定、标准的运行环境,但为了实现客户更加个性化的需求和保持K/3 BOS架构的开放性,还为客户化开发提供了插件编程机制,通过K/3 BOS业务单据和序时簿事件代理组件,把业务单据处理的关键事件接口抛出,客户可以接收这个事件代理组件,并对组件的抛出事件编程,从而实现个性化的事件处理方法,对K/3 BOS运行平台进行有效的扩充和扩展。
6.2 插件编程原理6.2.1 什么是插件插件(Plug-Ins)是一种专门为某一软件设计、用于功能扩充的程序。
通过插件可以实现客户个性化的定制。
插件不只是被动的接受宿主程序调用,更可以控制宿主程序以完成一些特定功能。
6.2.2 插件原理插件原理静态图如下所示:结合上图,可以对插件原理简单描述如下:以事件驱动为基础:插件(Plug-Ins)响应主程序发出的事件,在事件处理过程中完成功能。
捕获事件: 通过应用程序代理对象(ApplicationProxy)应用程序代理对象:就是对应用程序(宿主程序)本身的包装包含很多事件,在应用程序(Application),也就是宿主程序中激发事件,在插件引用这个对象就可以响应这些事件。
相当于架在应用程序和插件之间的桥梁。
本身不包含任何业务功能,仅仅用来发出事件和传递数据。
结合宿主程序(Application)、程序代理(ApplicationProxy)和插件(Plug-Ins)之间的关系,可以画出如下的插件原理动态图:6.2.3 应用程序代理对象(ApplicationProxy)在插件编程的机制中,最关键的还是应用程序代理对象(ApplicationProxy),因为这个对象相当于宿主程序和插件之间的桥梁,宿主程序的代言人,本身并不包括任何业务功能仅仅用来发出事件和传递数据。
它发出的事件越多,则插件可以扩展的功能点越多,对宿主程序的控制则越灵活;为何不直接引用应用程序本身,而要代理搭桥?首先,一个应用程序由多个组件(包)组成,如果插件要直接引用它们来捕获事件也可以的。
K3BOS插件开发常见技巧以下是为大家整理的K3bos插件开发常见技巧的相关范文,本文关键词为K3bos,插件,开发,常见,技巧,何在,工具栏,添加,多级,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
1、如何在工具栏上添加多级审核的按钮?在m_billInterface_menubarInitialize事件里添加如下代码即可。
setoTool=m_billInterface.menubar.bosTools(\withoTool.caption=\多级审核\.ToolTipText=\多级审核\.Description=\多级审核\.begingroup=False.Toolpicture=App.path+\.setpicture0,vbbuttonFaceendwithsetoband=omenubar.bosbands(\oband.bosTools.Insertbefore\将菜单对象插入指定工具栏2、如何在显示一张bos单据的同时给它赋值?要想在显示bos单据的同时给它赋值,关键是在显示前要购建m_billinterface的data包,这样在显示这张同据的时候,程序会解析data包,并将里面的值赋到单据界面上来。
DimdctDataAskfo.DictionaryDimdatasrvasobjectDimoTableinfoasobjectsetDatasrv=m_billInterface.K3Lib.createK3object(\Datasrv.classTypeID=lc lassTypeID'lclassTypeID需要弹出单据的IDsetoTableInfo=Datasrv.TableInfosetdctData=Datasrv.getemptybill'然后将当前单据数据包中需要的数据填充到dctdata的对应字段'在以上语句执行后,dctdata(“page2”)里只有一行表结构(即表体只有一行)'赋表头的值dctData(\m_billInterface.getFieldValue(\dctData(\m_billInterface.getFieldValue(\dctData(\m_billInterface.getFieldValue(\dctData(\m_billInterface.getFieldValue(\'赋表体的值Dimopage2Asobject====Fori=1Tom_billInterface.Data(\setopage2=dctData(\dctData(\添加到dcDatadctData(\更改分录号nextFori=1Tom_billInterface.Data(\'物料FItemIDdctData(\FItemID\m_billInterface.getFieldValue(\dctData(\FItemID\m_billInterface.getField Value(\dctData(\FItemID\m_billInterface.getFieldValue(\'物料名称fbasepropertydctData(\m_billInterface.getFieldValue(\dctData(\m_billInterface.getFiel dValue(\dctData(\m_billInterface.getFieldValue(\'计量单位FunitIDdctData(\FunitID\m_billInterface.getFieldValue(\dctData(\FunitID\m_bill Interface.getFieldValue(\dctData(\FunitID\m_billInterface.getFieldValue( \'数量FQtydctData(\m_billInterface.getFieldValue(\nextsetobj=createobject(\withobj.datasrv=datasrv==========.IscheckRight=True.show,,,dctDataendwith3、如何在插件中实现选单的功能?调用bos单据m_billInterface.billctl.DoselbilllclassTypeID'(原单的classTypeID)调用工业单据m_billInterface.billctl.DoseloldbilllclassTypeID'(原单的classTypeID)4、在插件中以新增、修改和查看方式打开另一单据'********************************************'功能:显示bos单据,显示的方式为新增、修改和浏览'参数:lclassTypeID—显示bos单据的ID''********************************************privatesubshowbill(byVallclassTypeIDAsLong)DimoDatasrvAsobjectDimobillAsobjectonerrorgoToerr_ctrsetoDatasrv=m_billInterface.K3Lib.createK/3object(\oDatasrv.classTypeI D=lclassTypeIDsetobill=createobject(\withobill.Datasrv=oDatasrv.Isnetcontrol=True.IscheckRight=True.show'**********************'show参数类型'第一个参数optionalbyVallIDAsLong=0;描述修改或查看的单据ID'第二个参数optionalbyValbshowgroupAsboolean=False;如是基础资料时,是否显示分组'第三个参数optionalbyValbillstatusAsLong=enu_billstatus_new;显示方式0—查看;1—新增;2—修改'第四个参数optionalbyValdctDataAsKFo.Dictionary'单据初始值'**********************endwithsetoDatasrv=nothingsetobill=nothingexitsuberr_ctr:setoDatasrv=nothingsetobill=nothingendsub5、显示bos序时簿并返回选中的值'********************************************'功能:显示bos序时簿并返回选中的值'参数:lclassTypeID—显示bos单据的ID''********************************************privateFunctionshowListbyReturn(byVallclassTypeIDAsLong)Asobject DimoDatasrvAsobjectDimobjLookupAsobjectonerrorgoToerr_ctrsetoDatasrv=m_billInterface.K3Lib.createK3object(\oDatasrv.classTypeID =lclassTypeIDIfoDatasrv.showfilterThensetobjLookup=createobject(\objLookup.classTypeID=lclassTypeIDsetobjL ookup.Datasrv=oDatasrvobjLookup.LookupsetshowListbyReturn=objLookup.VectReturnendIfsetoDatasrv=nothingsetobjLookup=nothingexitFunctionerr_ctr:setoDatasrv=nothingsetobjLookup=nothingendFunction6、如何在序事簿中得到选中行的记录集值?Dimvectselectaskfo.vectorDimrsasadodb.recordsetsetvectselect=m_Listinterface.getselectedbillInfosetrs=m_Listinterface.datasrv.getbillDetail(vectselect(1)(\7、将当前单据转化为另一单据,并无界面保存数据'********************************************'功能:将当前单据转化为另一单据,并无界面保存数据'参数:lclassTypeID—显示bos单据的ID'********************************************privatesubnouIsavebill(byVallclassTypeIDAsLong)DimoDatasrvAsobjectDimoTableInfoAsobjectDimobillAsobjectDimoDataAsobjectDimosrvAsobj ectDimopage2AsobjectDimiAsLongonerrorgoToerr_ctrsetoDatasrv=m_billInterface.K3Lib.createK3object(\oDatasrv.classTypeID =lclassTypeIDsetoTableInfo=oDatasrv.TableInfosetoData=oDatasrv.getem ptybillFori=1Tom_billInterface.Data(\setopage2=oData(\oData(\添加到dcDataoData(\更改分录号nextFori=1Tom_billInterface.Data(\oData(\m_billInterface.getFieldValue(\oData(\m_billInterface.getFieldValue(\oData(\以下是为大家整理的K3bos插件开发常见技巧(2)的相关范文,本文关键词为K3bos,插件,开发,常见,技巧,何在,工具栏,添加,多级,您可以从右上方搜索框检索更多相关文章,如果您觉得有用,请继续关注我们并推荐给您的好友,您可以在教育文库中查看更多范文。
K/3 BOS插件开发手册K/3 BOS插件开发手册(版本:V12.1)金蝶软件(中国)有限公司BOS系统部K/3 BOS系统部目录概述 (1)COM (1)K3ClassEvents的对象模型 (1)使用说明 (1)K3ClassEvents的对象 (2)ListEvents对象参考 (3)DataSrv 属性 (3)EnableListFillRowEvents 属性 (4)K3Lib 属性 (5)List 属性 (6)ListEntrySort 属性 (6)ListFilterString 属性 (7)ListHeadSort 属性 (7)MenuBar 属性 (7)MultiCheckMgr 属性 (8)RsId 属性 (8)ShowMode 属性 (9)ShowMsg 属性 (9)DeleteBill 函数 (9)GetDataFldByKey 函数 (10)GetDataFld 函数 (11)GetCurrentSelRowInfo 函数 (12)GetSelectedBillInfo 函数 (13)LoadSelectedBill 函数 (14)RefreshList函数 (15)SenderMessage 函数 (15)UpdateNormalFld 函数 (16)UpdateNormalFldByKey 函数 (17)RefreshMenu 函数 (17)AfterBatchMultiCheck事件 (18)AfterBusinessCheck 事件 (18)AfterBusinessCheckEx 事件 (18)AfterCopyBillCreateData 事件 (19)AfterDeleteBill 事件 (19)AfterMergeCopyBill事件 (20)AfterMultiCheck 事件 (20)AfterMultiCheckEx 事件 (21)AfterSelList 事件 (21)AfterUnBusinessCheck 事件 (21)AfterUnBusinessCheckEx 事件 (22)AfterUnMultiCheck 事件 (22)BeforeMultiCheck 事件 (23)BeforeMultiCheckEx 事件 (24)BeforePrintBill 事件 (24)BeforeSenderMessage 事件 (25)BeforRefreshToolBar 事件 (25)BusinessCheck 事件 (26)BusinessCheckEx 事件 (26)FinishMultiCheck 事件 (26)FinishMultiCheckEx 事件 (27)ListFillRow 事件 (28)ListRowSelected 事件 (29)MenuBarClick 事件 (30)MenuBarInitialize 事件 (30)MultiCheck 事件 (30)MultiCheckEx 事件 (31)PrintSuccessful事件 (32)StartMultiCheck 事件 (32)StartMultiCheckEx 事件 (33)UnBusinessCheck 事件 (33)UnBusinessCheckEx 事件 (34)UnMultiCheck 事件 (34)UnMultiCheckEx 事件 (35)ReMultiCheck 事件 (35)ReMultiCheckEx 事件 (36)ReUnMultiCheck 事件 (36)ReUnMultiCheckEx 事件 (37)BaseClassEvent对象参考 (38)BrowseCtl 属性 (38)DataSrv 属性 (38)EnableListFillRowEvents 属性 (38)InsertNewRowAndFillOption属性 (40)K3Lib 属性 (41)ListActiveBar 属性 (41)ListEntrySort 属性 (41)ListFilterString 属性 (42)ListHeadSort 属性 (42)MenuBar 属性 (42)RsClassGroup 属性 (43)RsId 属性 (43)GetActiveCtl 函数 (43)GetSelectedClassID 函数 (44)GetSelectedClassType 函数 (45)GetSelectedItemID 函数 (45)IsSearchState 函数 (47)PitchItemByID 函数 (48)SelectClassGroupByID 函数 (48)SenderMessage 函数 (49)SetStatus函数 (50)RefreshClassGroups 方法 (50)RefreshListByClassGroupID 方法 (51)RefreshSelectedClassGroup 方法 (51)RefreshSelectedClassGroupList 方法 (52)AfterGetData 事件 (52)BeforePrintBill 事件 (53)BeforeSenderMessage 事件 (53)ClassGroupSelected 事件 (54)DeleteBillSucessful事件 (55)ListFillRow 事件 (55)ListRowSelected 事件 (57)MenuBarClick 事件 (57)MenuBarInitialize 事件 (58)RefreshList 事件 (58)BillEvent对象参考 (59)AccessoryTypeID 属性 (59)BillCtl 属性 (59)BillEntrys 属性 (59)BillHeads 属性 (60)BillHeight 属性 (60)BillName 属性 (60)BillStatus 属性 (61)BillWidth 属性 (61)CancelPrintControl属性 (62)ClassType 属性 (62)ClassTypeEntry 属性 (62)ClassTypeKey 属性 (63)Data 属性 (63)DataSrv 属性 (63)EntryPrimaryKey 属性 (64)FID 属性 (64)InsertNewRowAndFillOption属性 (65)IsDoAction 属性 (65)IsDoActionData 属性 (65)K3Lib 属性 (66)LayerCount 属性 (66)LayerNames属性 (66)MenuBar 属性 (67)ObjectID 属性 (68)ObjectType 属性 (68)OriginalFieldValue属性 (68)PrimaryKey 属性 (69)ReSaveSuccess 属性 (69)rsBillID 属性 (69)ShowType 属性 (70)TableInfo 属性 (70)TableName 属性 (70)TaskID 属性 (71)ShowMsg 属性 (71)BatchToDoActions函数 (71)DeleteEntryData 函数 (72)GetActiveCtl 函数 (73)GetActiveField 函数 (74)GetCommonControl函数 (74)GetDataFld 函数 (75)GetDataFldbyKey 函数 (76)GetFieldInfoByKey 函数 (77)GetDynamicCtlByKey函数 (78)GetFieldValue 函数 (78)GetToolIndex 函数 (79)GetVariable函数 (80)InsertNewRowAndFill 函数 (81)IsChange 函数 (82)IsFileNeedFilter 函数 (82)LockBill 函数 (83)RefreshBill 函数 (83)SenderMessage 函数 (84)SetDecimal 函数 (84)SetFieldSumValue函数 (85)SetFieldValue 函数 (85)SetSumDecimal 函数 (87)SetText 函数 (87)SetTypeFloatMax 函数 (88)SetTypeFloatMin 函数 (88)ShowHideField 函数 (89)ShowHideGrid 函数 (90)Sum 函数 (90)UpdateLookFld 函数 (91)UpdateNormalFld 函数 (91)DoAction 方法 (92)IsDoActionByKey 方法 (92)RemoveRow 方法 (93)SaveBill 方法 (94)SetActiveTab方法 (94)SetBillFormCaption 方法 (95)SetCaption 方法 (95)SetGridMaxRows方法 (96)SetStatus 方法 (96)SetActiveCell 方法 (97)SetBillWindowState方法 (97)SetRowsPerRequest方法 (98)SetStateStampPicture方法 (98)SetStatusBarInfo方法 (99)SetVariable函数 (99)SizeBillControl方法 (100)AddNewRow 事件 (100)AfterBusinessCheck 事件 (101)AfterBusinessCheckEx 事件 (101)AfterCopyBill 事件 (101)AfterDeleteRow 事件 (102)AfterDoAction 事件 (102)AfterFillRow 事件 (103)AfterFirstNewBill 事件 (103)AfterInputBillSetSumData 事件 (104)AfterLoadBill 事件 (104)AfterLoadBillSetSumData 事件 (104)AfterLoadDynamicCtl事件 (105)AfterMergeCopyBill 事件 (105)AfterMultiCheck 事件 (105)AfterMultiCheckEx 事件 (106)AfterNewBill 事件 (106)AfterNewEmptyData 事件 (107)AfterSave 事件 (107)AfterSelBill 事件 (107)AfterSelBillBeforeFillData 事件 (108)AfterStockQuery事件 (108)AfterUnBusinessCheck 事件 (108)AfterUnBusinessCheckEx 事件 (108)AfterUnMultiCheck 事件 (109)AfterUnMultiCheckEx 事件 (109)BeforeDeleteRow事件 (110)BeforeDoAction 事件 (110)BeforeLoadBill 事件 (112)BeforeMultiCheck 事件 (112)BeforePrintBill 事件 (113)BeforeSave 事件 (114)BeforeSelBills 事件 (114)BeforeSelBillShowFilter 事件 (114)BeforeSenderMessage 事件 (115)BeforeSetMutilSelData事件 (116)BeforeSetMutilSelData2事件 (116)BeforeVerify 事件 (117)BeforeWindowExit事件 (117)BeforLoadBillFillData 事件 (117)BeginEdit 事件 (118)BusinessCheck 事件 (118)BusinessCheckEx 事件 (118)Change 事件 (119)CommandClick事件 (119)EntryFieldChanged事件 (120)FinishMultiCheck 事件 (120)FinishMultiCheckEx 事件 (121)GetFocus 事件 (121)HeadCtlClick 事件 (122)LostFocus 事件 (122)MenuBarClick 事件 (122)MenuBarInitialize 事件 (123)MultiCheck 事件 (123)MultiCheckEx 事件 (124)ReMultiCheck 事件 (125)ReMultiCheckEx 事件 (125)ReUnMultiCheck 事件 (125)ReUnMultiCheckEx 事件 (126)SaveBillFailed 事件 (126)SaveBillSuccess事件 (127)SSTabClick事件 (127)StartMultiCheck 事件 (127)StartMultiCheckEx 事件 (128)UnBusinessCheck 事件 (128)UnBusinessCheckEx 事件 (129)UnMultiCheck 事件 (129)UnMultiCheckEx 事件 (130)Verify 事件 (130)K3Lib对象参考 (132)Account 属性 (132)Net 属性 (133)User 属性 (133)CreateK3Object 函数 (137)GetData 函数 (138)GetK3Language 函数 (139)LoadKDString 函数 (140)UpdateData 方法 (142)GetStockQty 函数 (142)LookUpClass函数 (143)LoadBill 方法 (145)LoadList方法 (145)AccountID 属性 (147)AccountName 属性 (147)SetupType 属性 (147)Net对象参考 (149)BeginMutex 函数 (149)CommitMutex 函数 (149)QueryFunc 函数 (150)QuerySubSys 函数 (150)User对象参考 (151)UserID 属性 (151)UserName 属性 (151)MenuBar对象参考 (152)MenuBar 对象结构图 (152)ActiveBand 属性 (153)BOSBands 属性 (153)BOSTools 属性 (154)Refresh 方法 (154)BOSBands对象参考 (155)Count 属性 (155)Item 属性 (155)Add 函数 (155)Remove 方法 (156)RemoveAll 方法 (156)BOSBand对象参考 (157)BandName 属性 (157)BandType 属性 (157)BOSTools 属性 (157)Caption 属性 (157)CurrentTool 属性 (158)DockingArea 属性 (158)DockingOffset 属性 (158)DockLine 属性 (159)Flags 属性 (159)Visible 属性 (159)Refresh 方法 (160)BOSTools对象参考 (161)Count 属性 (161)Item 属性 (161)Add 函数 (161)GetFreeToolID 函数 (162)InsertAfter 方法 (162)InsertBefore 方法 (163)Remove 方法 (163)RemoveAll 方法 (164)BOSTool对象参考 (165)Alignment 属性 (165)BeginGroup属性 (165)Caption 属性 (165)CaptionPosition 属性 (166)Checked 属性 (166)Default 属性 (166)Description 属性 (167)Enabled 属性 (167)ShortcutKey 属性 (167)Style 属性 (170)SubBand 属性 (170)Tag 属性 (170)ToolID 属性 (170)ToolName 属性 (171)ToolPicture 属性 (171)TooltipText 属性 (171)Visible 属性 (171)PasteToolFace 方法 (171)SetPicture 方法 (172)BillHeads\BillHead\BillEntrys\BillEntry\BOSFields\BOSField对象参考 (174)MenuBar 对象结构图 (174)BillHeads对象参考 (175)Count 属性 (175)Item 属性 (176)BillHead对象参考 (177)BOSFields 属性 (177)BillEntrys对象参考 (178)Count 属性 (178)Item 属性 (179)BillEntry对象参考 (180)BOSFields 属性 (180)EntryHeight 属性 (180)EntryLeft 属性 (180)EntryTop 属性 (180)EntryType 属性 (181)EntryWidth 属性 (181)KeyField 属性 (181)Layer 属性 (181)MaxRows 属性 (182)TableName 属性 (182)Visible 属性 (182)AddRow 方法 (182)RemoveRow 方法 (183)BOSFields对象参考 (184)Count 属性 (184)Item 属性 (184)BOSField对象参考 (185)Caption 属性 (185)FieldHeight 属性 (185)FieldLeft 属性 (185)FieldLock 属性 (185)FieldName 属性 (186)FieldTop 属性 (186)FieldWidth 属性 (186)Filter 属性 (186)FKey 属性 (186)FontBold 属性 (187)FontItalic 属性 (187)FontName 属性 (187)FontSize 属性 (187)FrameBorder 属性 (188)FrameBorderColor 属性 (188)LabelColor 属性 (188)LabelWidth 属性 (188)Layer 属性 (188)MustInput 属性 (189)NeedSave 属性 (189)Note 属性 (189)Number 属性 (189)Page 属性 (189)Row 属性 (190)TableName 属性 (190)Text 属性 (190)TextColor 属性 (190)Value 属性 (190)SetFieldSumValue方法 (191).Net (192)基础配置 (192)开发环境 (192)使用说明 (192)引用 (192)插件跟踪 (192)K3ClassEvents的对象模型 (193)K3ClassEvents的对象 (193)ListEvents对象参考 (194)事件声明 (194)AfterCopyBillCreateData 事件 (195)OnBarInitialize事件 (195)AfterShowBill事件 (195)OnBarItemClick事件 (196)ShowBill函数 (196)AspxGetSelectList函数 (197)AddBarItem函数 (197)AddBarItemLink函数 (198)SetBarItemProperty函数 (199)AddBarItemLink函数 (199)RemoveBarItem函数 (200)RemoveBarItemLink函数 (200)BillName 属性 (201)ClassType 属性 (201)ClassTypeEntry 属性 (202)ClassTypeKey 属性 (202)PrimaryKey 属性 (202)EntryPrimaryKey 属性 (203)TableInfo 属性 (203)TableName 属性 (203)BillEvent对象参考 (205)事件声明 (205)OnBarInitialize事件 (206)OnBarItemClick事件 (207)AfterNewBill 事件 (207)BeforLoadBillFillData事件 (207)AfterLoadBill事件 (207)AfterShowBill 事件 (208)AfterConfirm事件 (208)AfterF7Select事件 (208)Change 事件 (209)BeforeSave 事件 (209)AddBarItem函数 (210)AddBarItemLink函数 (211)GetBarItemProperty函数 (211)SetBarItemProperty函数 (212)AddBarItemLink函数 (212)RemoveBarItem函数 (213)RemoveBarItemLink函数 (213)Alter函数 (214)Confirm函数 (214)GetFieldValue函数 (215)GetRequest函数 (216)LockCell函数 (216)LockWebTabItem函数 (217)SaveBill函数 (218)SetFieldValue函数 (218)ShowBill函数 (219)ShowF7Select函数 (220)BillName 属性 (221)ClassType 属性 (221)ClassTypeEntry 属性 (221)ClassTypeKey 属性 (222)PrimaryKey 属性 (222)EntryPrimaryKey 属性 (222)TableInfo 属性 (223)TableName 属性 (223)CurBillID属性 (224)BillHeads对象参考 (225)Count 属性 (225)Item 属性 (225)BillHead对象参考 (226)BOSFields 属性 (226)BillEntrys对象参考 (227)Count 属性 (227)Item 属性 (227)BillEntry对象参考 (228)BOSFields 属性 (228)EntryHeight 属性 (228)EntryIndex 属性 (228)EntryLeft 属性 (228)EntryTop 属性 (228)EntryType 属性 (229)EntryWidth 属性 (229)KeyField 属性 (229)TableName 属性 (230)Visible 属性 (230)BOSFields对象参考 (231)Count 属性 (231)Item 属性 (231)BOSField对象参考 (232)Caption 属性 (232)FieldHeight 属性 (232)FieldLeft 属性 (232)FieldLock 属性 (232)FieldName 属性 (233)FieldTop 属性 (233)FieldWidth 属性 (233)Filter 属性 (233)FKey 属性 (233)FontBold 属性 (234)FontItalic 属性 (234)FontName 属性 (234)FontSize 属性 (234)FrameBorder 属性 (235)FrameBorderColor 属性 (235)LabelColor 属性 (235)LabelWidth 属性 (235)Layer 属性 (235)MustInput 属性 (236)NeedSave 属性 (236)Note 属性 (236)Number 属性 (236)Page 属性 (236)Row 属性 (237)TableName 属性 (237)Text 属性 (237)TextColor 属性 (237)Value 属性 (237)Visible 属性 (238)用户场景 (239)需求 (239)总体需求 (239)需求分解 (240)详细需求 (241)单据信息 (241)单据流程 (243)多级审核 (244)设计和实现 (245)单据数据结构设计 (245)单据头 (245)单据体 (247)字段的过滤条件 (250)BOS IDE中设置过滤条件 (250)通过SQL更新字段的过滤条件 (252)Action设置 (253)自动生成Action (253)手动添加Action (256)单据流程 (258)【销售订单】下推生成【产品入库通知单】 (258)练习一下 (262)多级审核 (264)多级审核设置 (264)凭证功能 (265)设置凭证数据来源 (265)操作管理 (266)插件开发 (269)部署 (270)发布到主控台 (270)制作部署文件 (272)概述为了实现客户个性化的需求和保持K/3 BOS架构的开放性,K/3 BOS提供了插件编程,有效的扩展了K/3 BOS平台,K/3 BOS插件编程是通过K3ClassEvents对象代理实现的。