《K3BOS插件开发常见技巧》由会员分享,可在线阅读,更多相关《K3BOS插件开发常见技巧(7页珍藏版)》请在金锄头文库上搜索。
1、1、如何在工具栏上添加多级审核的按钮?在m_BillInterface_MenuBarInitialize事件里添加如下代码即可。SetoTool=m_BillInterface.MenuBar.BOSTools(mnuEditMultiCheck)WithoTool.Caption=多级审核.ToolTipText=多级审核.Description=多级审核.BeginGroup=False.ToolPicture=App.Path+Checker.bmp.SetPicture0,vbButtonFaceEndWithSetoBand=oMenuBar.BOSBands(BandToolBa
2、r)oBand.BOSTools.InsertBeforemnuFilePrint,oTool将菜单对象插入指定工具栏2、如何在显示一张BosD000DD0DD?要想在显示BosDOOODDODD,关键是在显示前要购建m_Billinterface的data包,这样在显示这张同据的时候,程序会解析data包,并将里面的值赋到单据界面上来。DimdctDataAskfo.DictionaryDimdatasrvasobjectDimoTableinfoasobjectSetDataSrv=m_BillInterface.K3Lib.CreateK3Object(K3ClassTpl.DataSr
3、v)DataSrv.ClassTypeID=lClassTypeIDlClassTypeID需要弹出单据的IDSetoTableInfo=DataSrv.TableInfoSetdctData=DataSrv.GetEmptyBill然后将当前单据数据包中需要的数据填充到dctdata的对应字段在以上语句执行后,dctdata(“page2”)里只有一行表结构(即表体只有一行)赋表头的值dctData(Page1)(oTableinfo(map)(FText)(FFLD)m_BillInterface.GetFieldValue(FText)dctData(Page1)(oTableinfo(
4、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)赋表体的值DimoPa
5、ge2AsObjectFori=1Tom_BillInterface.Data(Page2).UBound-1SetoPage2=dctData(Page2)(1).CloneAlldctData(Page2).AddoPage2添加到dcDatadctData(Page2)(i+1)(oTableinfo(map)(FIndex2)(FFLD)=i+1更改分录号NextFori=1Tom_BillInterface.Data(Page2).UBound物料FItemIDdctData(Page2)(i)(oTableinfo(map)(FItemID)(FFLD)m_BillInterfac
6、e.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)(oTable
7、info(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(fb
8、aseproperty,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)
9、(FFND)m_BillInterface.GetFieldValue(FUnitID,i,Enu_ValueType_FFND)数量FQtydctData(Page2)(i)(oTableinfo(map)(FQty)(FFLD)m_BillInterface.GetFieldValue(fqty,i,Enu_ValueType_FFLD)NextSetobj=CreateObject(K3SingleClassBill.ClassInfoManager)Withobj.datasrv=datasrv.ISCheckRight=True.Show,dctDataEndWith3、如何在插件中
10、实现选单的功能?调用Bos单据m_BillInterface.BillCtl.DoSelBilllClassTypeID(原单的ClassTypeID)调用工业单据m_BillInterface.BillCtl.DoSelOldBilllClassTypeID(原单的ClassTypeID)4、在插件中以新增、修改和查看方式打开另一单据,*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*功能:显示BOS单据,显示的方式为新增、修改和浏览参数:lClassTypelD显示BOS单据的ID,,*x*x*x*x*x*x*
11、x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*i*i*i*i*i*i*i*i*i*i*i*i*PrivateSubShowBill(ByVallClassTypeIDAsLong)DimoDataSrvAsObjectDimoBillAsObjectOnErrorGoToerr_ctrSetoDataSrv=m_BillInterface.K3Lib.CreateK/3Object(K3ClassTpl.DataSrv)oDataSrv.ClassTypeID=lClassTypeIDSetoBill=CreateObject(K3Si
12、ngleClassBill.ClassInfoManager)WithoBill.DataSrv=oDataSrv.ISNetControl=True.ISCheckRight=True.Show,*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*Show参数类型第一个参数OptionalByVallIDAsLong=0;描述修改或查看的单据ID第二个参数OptionalByValbShowGroupAsBoolean=False;如是基础资料时,是否显示分组第三个参数OptionalByValBillStatusAsLong=Enu_BillStatu
13、s_New;显示方式0查看;1新增;2修改第四个参数OptionalByValdctDataAsKFO.Dictionary单据初始值,*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*i*EndWithSetoDataSrv=NothingSetoBill=NothingExitSuberr_ctr:SetoDataSrv=NothingSetoBill=NothingEndSub5、显示BOS序时簿并返回选中的值,*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*1*
14、1*1*1*1*1*1*1*1*1*功能:显示BOS序时簿并返回选中的值参数:lClassTypelD显示BOS单据的ID,,*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*x*i*i*i*i*i*i*i*i*i*i*i*i*PrivateFunctionShowListByReturn(ByVallClassTypeIDAsLong)AsObjectDimoDataSrvAsObjectDimobjLookupAsObjectOnErrorGoToerr_ctrSetoDataSrv=m_BillInterface.K3Lib.CreateK3Object(K3ClassTpl.DataSrv)oDataSrv.ClassTypeID=lClassTypeIDIfoDataSrv.showfilterThenSetobjLookup=CreateObject(K3ClassLookUp.BillLookUp