版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、二次开发简介 曹且根金蝶软件(中国)有限公司研发中心提纲工业老单二次开发工业老单二次开发所需环境及要点工业老单序时薄二次开发工业老单单据二次开发工业老单实战演练组件编译及布署问题交流二次开发所需环境及要点 单据二次开发是针对现目前单据的一些功能无法满足一些客户的特殊要求,同时分公司又有能力进行二次开发而提出的,这样既可以在现有的系统不做变动的情况下面满足用户的需求,同时也增强了系统的稳定性。本篇所介绍所用到的动态连接库名为:K3BillTransfer.dll 通过该说明文档,你可以了解到1.如何通过K3BillTransfer组件在录单过程中对单据上各项目加以控制。2.如何通过K3BillT
2、ransfer组件实现自定义功能菜单。 3.如何通过K3BillTransfer组件控制数据的保存。4.如何在序时薄上增加菜单及应用。5.应用示例实战演练。 适用对象 需要在K/3供应链系统单据上进行二次开发的开发者 开发环境 1.安装过K/3ERP 9.41以后的版本且购买过供应链系统。 2.VB6.0企业版+SP1 3.SQL SERVER 2000及后续版本(SQL SERVER 2019,SQL SERVER 2019)序时薄二次开发老单序时薄开发相对简单,它只能在序时薄上增加菜单,通过菜单去实现一些二次开发功能.使用方法:1.)在t_BandToolMapping中的FcomName
3、填入需要调用组件的名称,注意:不要覆盖原有内容,要在原有内容上用“| ”分割后加入自己的组件,可以加多个组件。第一个插件前一定要加“|”,因为之前的部分是记录了其他信息。2)二次开发组件必须实现MainFunction(ByVal sKey As string,oList AsObject,Byref bCancel as Boolean)方法。要终止事件,请将bCancel设置为true。3)oList为一个即是ICList,可以使用其中的任何Public方法。比方说 GetSelData 为取得选取的对象 序时薄二次开发流程图 序时薄二次开发范例增加元数据按钮菜单名“FMenuPC”,新增
4、加一个不存在的FToolIDDelete From t_MenuToolBar Where FToolID = 10002insert into t_MenuToolBar ( FToolID,FName,FCaption,FCaption_CHT,FCaption_EN,FImageName,FToolTip,FToolTip_CHT,FToolTip_EN,FControlType,FVisible,FEnable,FChecked,FShortCut,FCBList,FCBList_CHT,FCBList_EN,FCBStyle,FCBWidth,FIndex,FToolCaption,
5、FToolCaption_CHT,FToolCaption_EN) values (10002,FMenuPC,外购入库拆分,外购入库拆分,外购入库拆分,39,外购入库拆分,外购入库拆分,外购入库拆分,0,0,1,0,0,0,0,0,外购入库拆分,外购入库拆分,外购入库拆分)序时薄二次开发范例续 将上面的按钮插入到菜单栏和工具栏在t_BandToolMapping中的FcomName填入需要调用组件的名称,注意:不要覆盖原有内容,要在原有内容上用“| ”分割后加入自己的组件,可以加多个组件。第一个插件前一定要加“|”,因为之前的部分是记录了其他信息。FID对应iclisttemplate里的F
6、MenuID, FBandID表示放在哪个菜单下(对应t_BandToolMapping.FSubBandID),可以通过以下语句关联得到是哪个菜单 select a.*,b.fname,b.FCaption From t_BandToolMapping a, t_MenuToolBar b where a.FID = 82 and a.ftoolid=b.ftoolid 将按钮插入到菜单栏 Delete From t_BandToolMapping where FBandID=3 and FToolID = 10002 and FID = 82insert into t_BandToolMa
7、pping (FID,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup) values (82,3,10002,0,65,|K3ListPlug.List,0)范例续将按钮插入到工具栏Delete From t_BandToolMapping where FBandID=52 and FToolID = 10002 and FID = 82insert into t_BandToolMapping (FID,FBandID,FToolID,FSubBandID,FIndex,FComName,FBeginGroup) values (
8、82,52,10002,0,65,|K3ListPlug.List,0)在外购入库序时薄显示按钮(如果里面有|V,则只能在后面加菜单项)Update IclistTemplate set FLogicStr=FLogicStr+ Case When Right(FLogicStr,1)=| then V:FMenuPC else |V:FMenuPC end where FID =1 and not FLogicStr like %FMenuPC%序时薄二次开发数据元建好之后,再新建一个工程文件。如:新建一个vb工程,命名为:ProListBill,在工程中新建一个类命名为:ListBill序
9、时薄二次开发在类ListBill中添加以下代码以上只是序时薄二次开发实现的一个简单的例子,具体的二次开发,要根据不同的需求,进行相应的开发,接口都是统一调用MainFunction函数,再根据具体情况进行扩展。序时薄二次开发单据二次开发单据二次开发主要通过K3BillTransfer组件控制单据上一些操作。其常用属性1.Property Cnnstring As String当前数据库的MMTS.PropsString连接串。2Property SystemName As String当前系统名称。3Property LastInfo As String 最后一次系统返回的各种信息4Prope
10、rty BillForm As Object 整个单据窗体对象。可通过该对象访问单据上的任何一个对象,包括控件, 菜单。 共有的方法有:InsertRow(),在Grid的当前行追加一行,它没有参数。5Property BillFunc as Object代表单据对象。目前没什么用途。其常用属性续6Property Head As Object 单据表头控件,是一个KDText控件数组7Property Grid As Object 单据分录控件,为FpSpread控件8Property SumGrid As Object单据分录合计控件, 为FpSpread控件9Property HeadC
11、tl As Variant对应表头控件数组,记录每个表头项目各属性的数组如果要改变HeadCtl中的某个属性值,需先对HeadCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给HeadCtl。单据二次开发其常用属性续10Property EntryCtl As Variant对应分录各列,记录每个分录列各属性的数组如果要改变EntryCtl中的某个属性值,需先对EntryCtl做一个备份,然后修改此备份的相应属性值,再将此备份赋值给EntryCtl11Property SaveVect As KFO.Vector二次开发外部数据存取接口。在录单过程中,用户可将某些数据保存在此Vec
12、tor中,在单据保存时,再通过二次开发中间层组件,将此Vector中的数据保存到指定位置。SaveVect.Item(1) 为一个KFO.Dictionary对象该对象包含以下四个系统数据 SaveVect.Item(1).Value(FInterID):单据内码 SaveVect.Item(1).Value(FTransType) :单据事务类型 SaveVect.Item(1).Value(ISRedBill) :是否红字单据 SaveVect.Item(1).Value(BillChecked) :是否审核。单据二次开发常用的方法Function AddUserMenuItem(ByVa
13、l Caption As String, ByVal RootMenuCaption As String = )说明:添加一个用户自定义菜单项,系统一共预设了五个菜单项供二次开发使用参数:Caption:菜单名称 RootMenuCaption:根菜单名称。缺省为“自定义菜单”2Function GetGridText(ByVal Row As Long, ByVal Col As Long) As String说明:获取分录某单元格的值参数:Row:分录行,Col:分录列3Function GetHeadNumber(ByVal CtlIndex As Long) As String说明:获
14、取表头某项的代码参数:CtlIndex:表头控件索引4Function GetHeadText(ByVal CtlIndex As Long) As String说明:获取表头某项的文本参数:CtlIndex:表头控件索引单据二次开发单据二次开发常用的方法续5.Function GetSumGridText(ByVal Row As Long, ByVal Col As Long) As String说明:获取合计行某列的值参数:Row:行。一般为1,Col:分录列6Function SetGridText(ByVal Row As Long, ByVal Col As Long, ByVal
15、 Value, ByVal InterID As Long = 0, ByVal sName As String = ) As Boolean说明:设置分录某单元格的值,当分录为查找类型时,会把相应的信息一起 携带到相应的位置,如当为物料代码时,它会携带物料的一些基本 信息物料名称等。参数:Row:分录行,Col:分录列,Value:设置的值。如果该单元格是查找 类型的,Value应设置为代码。InterID:暂未使用,sName:暂未使用常用的方法续7Function SetHead(ByVal Index As Long, ByVal Value, ByVal InterID As Lon
16、g = 0, ByVal sName As String = ) As Boolean说明:设置表头某项的值参数:Index:表头控件索引, Value:设置的值。如果该表头项是查找类型的,Value应设置为代码, InterID:暂未使用, sName:暂未使用8Function SetSumGridText(ByVal Row As Long, ByVal Col As Long, ByVal Value) As Boolean说明:设置分录合计某列的值参数:Row:分录行。一般为1 Col:分录列 Value:设置的值。单据二次开发常用的事件1.Public Event BillInit
17、ialize()单据初始化完成时激发该事件2Public Event BillTerminate()单据卸载完成时激发该事件3Public Event UserMenuClick(ByVal Index As Long, ByVal Caption As String)说明:当点击用户自定义的菜单时激发这个事件。参数:Index:表示第几个菜单、由添加菜单的先后顺序决定, Caption:菜单项的标题,如何添加自定义菜单请参见方法 AddUserMenuItem4.Public Event HeadChange(ByVal CtlIndex As Long, ByVal Value As Va
18、riant, ByVal bNewBill As Boolean, Cancel As Boolean)说明:当表头的一个项目改变时激发这个事件参数: ctlIndex 表头字段索引 Value 当前值 bNewBill是否是新增单据 Cancel是否取消单据二次开发常用的事件续5.Public Event LeveCell(ByVal Col As Long, ByVal Row As Long, _ ByVal NewCol As Long, ByVal NewRow As Long, Cancel As Boolean)说明:当离开分录的一个单元格的时候激发这个事件参数:Col 分录的要
19、离开列 Row分录的要离开行 NewCol 新的列 NewRow新的行 Cancel是否取消6Public Event GridChange(ByVal Col As Long, ByVal Row As Long, ByVal Value As Variant, ByVal bNewBill As Boolean, Cancel As Boolean)说明:当表体的一个项目改变时激发这个事件参数: Col 分录的当前列 Row分录的当前行 Value 当前值 bNewBill是否是新增单据 Cancel是否取消单据二次开发常用的事件续Public Event BeforGridLookUp(
20、ByVal Row As Long, ByVal Col As Long, ByVal nLookUpClsID As Long, Cancel As Boolean)说明:在分录执行查找功能之前激发这个事件参数: Col 分录的当前列,Row分录的当前行, nLookUpClsID 当前查询的资料类型,Cancel是否取消8Public Event EndGridLookUp(ByVal Row As Long, ByVal Col As Long, ByVal nLookUpClsID As Long)说明:在分录完成查找功能之后激发这个事件参数: Col 分录的当前列,Row分录的当前行
21、, nLookUpClsID 当前查询的资料类型9Public Event BeforHeadLookUp(ByVal CtlIndex As Long, ByVal nLookUpClsID As Long, Cancel As Boolean)说明:在表头的一个项目执行查找功能之前激发这个事件参数: ctlIndex表头字段索引 nLookUpClsID 当前查询的资料类型 Cancel是否取消单据二次开发常用的事件续Public Event EndHeadLookUp(ByVal CtlIndex As Long, ByVal nLookUpClsID As Long)说明:在表头的一个
22、项目完成查找功能之后激发这个事件,参数: ctlIndex表头字段索引nLookUpClsID 当前查询的资料类型11Public Event BeforeSave(ByVal bNew As Boolean, ByRef ReturnCode As Long)说明:在单据执行保存功能的时候激发这个事件参数: bNew 表示是否是新增单据,ReturnCode 返回参数 -1: 失败,结束 单据保存;0:成功,继续单据保存 ,1:成功返回,结束单据保存12Public Event EndSave(ByVal BillNo As String)说明:在单据执行完成保存功能的时候激发这个事件参数:
23、 BillNo表示单据的编号单据二次开发常用的事件续13.Public Event LoadBillEnd(ByVal ShowType As Long)说明:在单据装载完成的时候激发这个事件参数: ShowType 单据显示状态0新增 1.修改 2.查看 3.审核14Public Event NewBillEnd()说明:在单据新增完成的时候激发这个事件15Public Event SetMenuBarCtlPropEnd(ByVal ShowType As Long, ByVal BillChecked As Boolean)说明:在单据设置菜单、工具条各属性完成的时候激发这个事件参数:S
24、howType单据显示状态 0新增 1.修改 2.查看 3.审核 BillChecked 单据是否已被审核16Public Event BeforeFillBillData(ByVal BillTransType As Long, ByVal BillInterID As Long)说明:在装载某张单据之前激发这个事件参数: BillTransType 单据事务类型 BillInterID单据内码单据二次开发常用的事件续17Public Event EndBillFormActive()说明:在显示单据之后激发这个事件18Public Event GridFormat( ByVal Col A
25、s Long, ByVal Row As Long)说明:在设置单据体格式后激发这个事件参数:Col要设置格式的目标列 Row要设置格式的目标行19Public Event RefreshControl()说明:在设置单据的单元格和单据头的锁定状态后激发这个事件20Public Event BeforeEntrySplit(ByVal pCurRow As Long, ByVal pSplitCount As Long, ByVal pSplitMethod As Long, ByRef pCancel As Boolean)说明:在单据的拆分操作之前激发此事件参数:pCurRow要拆分的当前
26、分录行 pSplitCount拆分的数目 pSplitMethod拆分分录位置 0 插入式, 1追加式 pCancel是否取消拆分 true:取消拆分false:拆分单据二次开发21Public Event AfterEntrySplit(ByVal pCurRow As Long, ByVal pSplitCount As Long, ByVal pSplitMethod As Long)说明:在单据的拆分操作之后激发此事件参数:pCurRow被拆分的分录行 pSplitCount被拆分成的数目 pSplitMethod拆分分录位置 0: 插入式, 1:追加式22Public Event O
27、nBeforeDelRow(ByVal lRow As Long, ByRef bCancel As Boolean)说明:在单据删除指定行之前激发此事件参数:lRow指定要删除的行,bCancel是否取消删除,true:取消删除 false:删除23. Public Event OnAfterDelRow(ByVal lRow As Long, ByRef bCancel As Boolean)说明:在单据删除指定行后激发此事件参数:lRow被删除的行 bCancel备用参数,目前没用到单据二次开发中间层事件如果需要在单据保存的事务处理过程中插入一些用户处理过程,可以编写一个用户中间层,必须
28、包含以下两个函数:1Public Function BeginSave(ByVal Sdsn As String, ByRef SaveVect As KFO.Vector, ByRef ReturnMsg As String) As Boolean说明:在单据保存的事务处理中,在单据数据保存到数据库之前,调用 该函数。返回值:FALSE 保存事务终止,返回错误。 TRUE 单据继续保存事务 处理。参数:Sdsn:MMTS.PropsString,SaveVect:二次开发外部数据存取接口。 ReturnMsg:失败时返回的错误信息。单据二次开发中间层事件续2Public Function E
29、ndSave(ByVal Sdsn As String, ByRef SaveVect As KFO.Vector, ByRef ReturnMsg As String) As Boolean说明:在单据保存的事务处理中,在单据数据保存到数据库之后,调 用该函数。返回值:FALSE 保存事务终止,返回错误。TRUE单据继续保存事务处理。参数:Sdsn:MMTS.PropsString SaveVect:二次开发外部数据存取接口。 ReturnMsg:失败时返回的错误信息。单据二次开发关于HeadCtl、EntryCtl数组属性和Head控件数组、Grid的简要说明HeadCtl ID As I
30、nteger 数组的Index与KDCtl的Index相对应,(FCtlIndex) Caption As String KDCtl的Caption FontName As String 字体 FontSize As Integer 字体大小 FCtlIndex As Integer 控件序号 TabIndex As Integer TAB索引 Left As Single 左 Top As Single 上 Width As Single 宽 Height As Single 高 Enable As Boolean 控件是否Locked与KDCtl的Locked属性相对应 EnableVal
31、ue As Integer件在各种状态下的可用性:新增、修改、察看、审核、下达。单据二次开发HeadCtl数组续用一个五位的二进制数表示,可见则对应位为1,否则为0。常用值:0、31。 bPrint As Boolean 是否打印 Visible As Boolean 是否可见 VisibleValue As Integer 控件在各种状态下的可见性:新增、修改、察看、审核、下达。用一个五位的二进制数表示,可见则对应位为1,否则为0。常用值:0、31。 NeedSave As Boolean 该控件的值是否保存 RelateOutTbl As Boolean 该控件的值是否来自其他表 Must
32、Input As Boolean 该控件是否必须输入 LookUpCls As Integer 如果控件的类型是查找类型的(LookUpCls=ctlLookUp),则该属性标示查找的类型 -控件的数据来源属性 单据二次开发HeadCtl数组续 InterID As Long FInterID As String nterID 对应的字段名 Number As String FNumber As String Number 对应的字段名 Name As String FName As String Name 对应的字段名 -控件的数据保存属性 FieldName As String 该值保存时
33、对应的字段名 Vale As String 保存的值(要用ValType来格式化) Filter As String 查找的过滤条件 LOCKA As Boolean 选单锁定单据二次开发EntryCtl 数组ID As Integer 数组的Index与KDCtl的Index相对应,(FCtlIndex)CtlType As E_CtlType 控件的类型(KCtlType)Enable As Boolean 控件是否Locked与KDCtl的Locked属性相对应EnableValue As Integer控件在各种状态下的可用性:新增、修 改、察看、审核、下达。用一个五位的二进制数表示,
34、 可见则对应位为1,否则为0。常用值:0、31。bPrint As Boolean 是否打印Visible As Boolean 是否可见VisibleValue As Integer 控件在各种状态下的可见性:新增、修改、 察看、审核、下达。用一个五位的二进制数表示,可见则对应 位为1,否则为0。常用值:0、31。NeedSave As Boolean 该控件的值是否保存RelateOutTbl As Boolean 该控件的值是否来自其他表MustInput As Boolean 该控件是否必须输入LookUpCls As Integer 如果控件的类型是查找类型的(LookUpCls=c
35、tlLookUp),单据二次开发EntryCtl数组续则该属性标示查找的类型 NeedCount As Boolean 是否需要合计 StatCount As Boolean 是否汇总类字段 FCtlIndex As Integer 控件序号 FCtlOrder As Integer 控件顺序号 RelationID As String 该列相关联的父级列 -控件的数据来源属性 FInterID As String InterID 对应的字段名 FNumber As String Number 对应的字段名 FName As String Name 对应的字段名 FilterString As
36、 String DInterID() As String 如果该控件是查找类型的,则在该数组内记录InterID的值,其他的值直接从界面中取得 单据二次开发EntryCtl数组续-控件的数据保存属性 SaveRule As String FieldName As String 该值保存时对应的字段名 ValType As E_ValType 保存值的数据类型 SaveValue As E_SaveValue 保存何种类型的值(FName、 InterID、Number) DName() As String DNumber() As String Filter() As StringHeadIt
37、emID 当前数据的内码ItemName当前数据的名称 ItemNumber当前数据的ID Text控件显示的Text单据二次开发Grig控件GridSetText(col as Long,Row as Long , var) 方法给数据控件的第Col列,第Row行赋值varGetText(col as Long,Row as Long , var) 方法取数据控件的第Col列,第Row行的值varCol指定起始列Col2指定结束列Row指定起始行Row2 指定结束行Lock是否锁定Value 指定行列的单元格的值单据二次开发二次开发实现的步骤:第一步、新建组件工程(假设工程名为ReDevPr
38、o,包含一个类名为 clsReDev的类模块),引用k3BillTransfer 组件和其他你要使用的组件例如ADO-Microsoft ActiveX Data Objects 2.1 Library等。第二步、在clsReDev类代码中声明 Private WithEvents m_BillTransfer As k3BillTransfer.Bill。第三步、必须添加以下代码否则系统不能够传递事件到你的组件中 Public Sub Show(ByVal o As Object) Set m_BillTransfer = o End Sub第四步、在m_BillTransfer的各事件中编
39、写相应处理代码。例如 Private Sub m_BillTransfer_BillInitialize() Set cn = New ADODB.Connection cn.CursorLocation = adUseClient cn.Open m_BillTransfer.Cnnstring End Sub单据二次开发二次开发实现的步骤续:第五步、编写完成以后编译你的工程第六步、注册二次开发组件使单据调用时能触发在表t_ThirdpartyComponent中增加二次开发组件记录,各字段 含义为FTypeID:二次开发插件类型,0为客户端插件;2为中间层插件FTypeDetailID:单
40、据类型ID,客户端表示对应表ICTransactionType的 FID,中间层表示事件类型FIndex:组件调用顺序,按FTypeDetailID排取一个值FComponentName:客户端二次开发组件,如PrjDemo.clsDemoFComponentSrv:中间层保存二次开发组件名称FDescription:描述单据二次开发举几个二次开发的例子范例一在菜单中添加一个菜单,并实现该功能Private Sub m_BillTransfer _BillInitialize() m_BillTransfer.AddUserMenuItem ddd, dddddd End SubPrivate
41、 Sub m_billtranty_UserMenuClick(ByVal Index As Long, ByVal Caption As String)If Caption = ddd Then MsgBox OK 此处可以实现该菜单的功能代码End IfEnd Sub单据二次开发范例二改变单据头的Filter属性值,在插件中看到已经改变,为什么没有传到k3bills中去,用以下代码即可实现PrivateSubm_BillTransfer_BeforHeadLookUp(ByValCtlIndexAsLong,ByValnLookUpClsIDAsLong,CancelAsBoolean)
42、DimTHeadCtlAsVariant DimiAsLong IfCtlIndex=4Then THeadCtl=m_BillTransfer.HeadCtl THeadCtl(CtlIndex).Filter=Replace(THeadCtl(CtlInd ex).Filter,986=986”,“986986”) m_BillTransfer.HeadCtl=THeadCtl 一定需要先定义 一个THeadCtl的变量, 最后把该变量赋给 m_BillTransfer.HeadCtl,才能使其真正生效EndIf EndSub单据二次开发范例三在插件中改变辅助属性的值为什么不起作用,插件中
43、对表体的赋值有的不能按照m_BillTransfer.SetGridText的形式修改,一定要调用m_BillTransfer.BillForm.SetBillDataInput方式才可以真正修改SettmpItemInfo=NewKFO.Dictionary tmpItemInfo(Name)=黄色辅助属性名称 tmpItemInfo(Number)=YELLOW辅助属性代码 tmpItemInfo(Value)=2辅助属性内码 m_BillTransfer.BillForm.SetBillDataInputtmpItemInfo, FAuxPropID,1,1 SettmpItemInfo
44、=Nothing SetBillDataInput辅助属性包,字段名,单据体(0:单据头;1:单据体),行号单据二次开发范例四在插件中填界面字段的三值Private Const OperNo = 22 FOperID的FCtlOrder Private Sub SetOperID(ByVal Row As Long, ByRef dctResult As KFO.Dictionary) On Error GoTo HErr Dim EntryCtl As Variant EntryCtl = m_BillTransfer.EntryCtl EntryCtl(OperNo).DInterID(R
45、ow) = dctResult.GetValue(FOperID) EntryCtl(OperNo).DNumber(Row) = dctResult.GetValue(FID) EntryCtl(OperNo).DName(Row) = dctResult.GetValue(FName) m_BillTransfer.EntryCtl = EntryCtl m_BillTransfer.SetGridText Row, OperNo, dctResult.GetValue(FName) HErr: . End Sub单据二次开发二次开发中间层接口Public Function HookInv
46、oke(ByVal EventID As Long, dctParams As KFO.Dictionary) As Long dctParams参数包里有可能要使用的单据信息操作信息和连接串sDsn连接串OperateCode1 -审核 2 -反审核 4 -保存 8 -删除 16 -反作废 32 -作废 64 -单据复制TranType单据类型InterID单据内码ROB1-蓝字-1红字返回值1为正常,返回值0为失败,可以向上抛出异常和提示信息单据二次开发EventID说明300014单据拆分后事件300013单据拆分前事件300012单据合并后事件300011单据合并前事件300010单据
47、关联反写后事件300009单据关联反写前事件300008关闭/反关闭单据后事件300007关闭/反关闭单据前事件300006作废/反作废单据后事件300005作废/反作废单据前事件300004删除单据后事件300003删除单据前事件300002序时簿复制后事件300001序时簿复制前事件100001生成凭证结束反写事件100000生成凭证结束反写事件200003审核退出前事件200002审核反写事件200001审核前事件单据二次开发客户端二次开发,先在二次开发模板中插入记录(t_ThirdPartyComponent)delete from t_ThirdPartyComponent wher
48、e FComponentName=ProBillPlugIns.clsStockIn_PlugInsdeclare FIndex intset FIndex=(select MAX(FIndex) from t_ThirdPartyComponent WHERE FTypeDetailID=2)INSERT INTO t_ThirdPartyComponent(FTypeID,FTypeDetailID,FIndex,FComponentName,FComponentSrv,FDescription)SELECT 0,2,FIndex+1,ProBillPlugIns.clsStockIn_P
49、lugIns,生产领料单插件GO二次开发实战演练二次开发实战演练判断生产任务单是否生成领料单先创建工程ProBillPlugIns:创建好类: clsStockIn_PlugIns二次开发实战演练业务实现主函数二次开发实战演练中间层二次开发,先在二次开发模板中插入记录(t_ThirdPartyComponent)DELETE FROM t_ThirdPartyComponent WHERE FComponentSrv=MProSaleBillOut.clsMSaleBillOut_PlugInsdeclare FIndex intset FIndex=(select isnull(MAX(FI
50、ndex),0) from t_ThirdPartyComponent WHERE FTypeDetailID=300009)INSERT INTO t_ThirdPartyComponent(FComponentSrv,FTypeID,FTypeDetailID,FIndex,FComponentName,FDescription)SELECT MProSaleBillOut.clsMSaleBillOut_PlugIns,2,300009,FIndex+1, ,销售出库单审核反写接口- FROM t_ThirdPartyComponent GO二次开发实战演练注意MTSTransactionMode属性的选择二次开发实战演练MTSTransactionMode属性可能的值有:0-NotAnMTSObject对象无法识别MTS或者事务处理,而且不参与其中。 1-NoTransactions对象无法在事务处理模式里执行,即使它是由参与事务处理的某个对象调用的。 2-RequiresTransaction对象必须在事务处理里运行。如果对象的创建者有事务处理,那么对象就要在其创建者的事务处理里运行。如果情况不是如此,那么就会为对象创建一个事务处理。 3-UsesTransaction对象需要或者不需要事务处理都可以运行。如果对象的创
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- JJF 2175-2024水溶性酸测定仪校准规范
- 速写交通课件教学课件
- 2024年度金融服务技术外包合同
- 认识雪 课件教学课件
- 2024年度建筑项目工程终止合同
- 2024年度太阳能系统安装合同
- 2024年度企业咨询服务外包合同
- 2024年修订版:农产品冷链物流配送协议
- 2024年建筑合同纠纷解决策略
- 2024小区智能化系统工程施工合同协议书范本
- 四肢关节病症推拿治疗-梨状肌综合症患者的推拿治疗
- 房产开发地块收购项目可行性研究报告(完美版)
- JJF 2133-2024海洋资料浮标传感器校准规范
- HGT 6333-2024《煤气化灰水阻垢分散剂阻垢性能测定方法》
- 高三一模“人生需要学会绕行”审题立意及范文(彩色高效版)
- 2023-2024学年江苏省南京玄武区中考语文最后一模试卷含解析
- 职场心理学智慧树知到期末考试答案章节答案2024年山东工商学院
- 2024中国通信服务股份限公司招聘公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版
- 中医养生活动策划方案
- 汽车坡道玻璃雨棚施工方案
- 漫画解读非煤地采矿山重大事故隐患判定标准
评论
0/150
提交评论