BOS单据审核接口和反审核接口怎么调用?
求助:如何通过代码调用BOS单据的审核及驳回接口?
有样例代码吗?
另外单据的启动审核接口如何调用?
我这边有跟踪出来是组件K3MBOSMultiCheck.dll,但不知道参数如何组织。
能不能搞一个简单的接口啊?这太复杂了,都没心思调用。
经验证,代码是成功的,不过有处代码需要赋值,不赋值会报错:
'审核扩展信息
Set dctExtInfo = New KFO.Dictionary
dctExtInfo("FCheckComment") = "" '审核意见信息 可为空
dctExtInfo("FAppointCheckerInfo") = "" '指定的下级审核人信息 可为空
dctExtInfo("FAppointRouteInfo") = “-1" '指定的审核路线信息 可为空
最后一行是要赋值的,不赋值会报错,目前已经验证值可以赋成1,0,-1,
具体含义不清楚。
反审核的代码也是能用的,而且是一步到位就全部驳回了。
至于分步驳回,这段代码可能得再改一下。
请参考以下:----from lgj
'中间层审核接口说明:
'@sPropsString 数据库连接串
'@dctTemplate 审批模板信息
'@dctClassType 单据整体模板
'@dctTableinfo 单据字段字典包
'@dctData 单据数据包
'@dctPreNodeTempalte 上一节点信息
'@dctCurrentNodeTempalte 当前节点信息
'@dctNextNodeTempalte 下一节点信息
'@dctExtInfo 扩展信息 包含审核意见 指定下一级审核路线和下一级审核人的信息
Public Function Check(ByVal sPropsString As String, _
ByVal dctTemplate As KFO.Dictionary, _
ByVal dctClassType As KFO.Dictionary, _
ByVal dctTableinfo As KFO.Dictionary, _
ByVal dctData As KFO.Dictionary, _
ByVal dctPreNodeTempalte As KFO.Dictionary, _
ByVal dctCurrentNodeTempalte As KFO.Dictionary, _
ByVal dctNextNodeTempalte As KFO.Dictionary, _
ByRef dctExtInfo As KFO.Dictionary) As Boolean
'注意以下示例代码只适用审批流流程中只有流程节点,没有会签节点的情况
'由于涉及到会签节点逻辑处理比较复杂,暂时先不考虑,待后续有需求再编写
'审批流可能存在多个版本,获取当前单据内码运行的审批流流程ID
Set obj = CreateObject("K3MBOSMultiCheck.BillInfo")
Set dctRunID = obj.GetBillMCTemplateID(sPropsString, lClassTypeID, lBillID)
lRunID = dctRunID.GetValue("ftemplateid", 0)
'根据审批流程ID,获取审批流模板信息
Set dctMCTemplate = obj.GetMixedCheckFlow(sPropsString, lRunID)
Set obj = Nothing
'获取单据相关模板信息
Set oDatasrv = CreateObject("K3ClassTpl.DataSrv")
oDatasrv.PropString = sPropsString
oDatasrv.ClassTypeID = lClassTypeID
Set dctClassType = oDatasrv.ClassType
Set dctTableinfo = oDatasrv.TableInfo
'根据单据内码加载单据数据包
Set dctData = oDatasrv.LoadBill(lBillID)
'获取当前单据的审批状态信息
Set obj = CreateObject("K3MBOSMultiCheck.BillInfo")
Set vctMixedStatus = obj.GetMixedStatus(sPropsString, lClassTypeID, lRunID, lBillID)
'获取前一节点模板:dctPreNodeTempalte
'当前节点 dctCurrentNodeTempalte
'下一节点 dctNextNodeTempalte
If vctMixedStatus.Size > 0 Then
'前一节点
lPreTagIndex = vctMixedStatus(vctMixedStatus.Size)("FTagIndex")
Set dctPreNodeTempalte = dctMCTemplate("MCTableInfo")(dctMCTemplate("Map")(lPreTagIndex)).CloneAll
'当前节点
lCurTagIndex = vctMixedStatus(vctMixedStatus.Size)("FNextLevelTagIndex")
Set dctCurrentNodeTempalte = dctMCTemplate("MCTableInfo")(dctMCTemplate("Map")(lCurTagIndex)).CloneAll
Else
lCurTagIndex = 0 '当前节点为启动审核节点
Set dctCurrentNodeTempalte = dctMCTemplate("MCTableInfo")(dctMCTemplate("Map")(lCurTagIndex)).CloneAll
End If
'下一节点
'循环查找当前节点lCurTagIndex后有哪些下级节点
Set vctNextNodes = New KFO.Vector
For Each dct In dctMCTemplate("MCTableInfo")
If dct("FOriginBox") = lCurTagIndex Then '线路的开端是当前节点的TagIndex 那么目的端FDestinationBox就是下级节点
lNextTagIndex = dct("FDestinationBox")
Set dctTemp = dctMCTemplate("MCTableInfo")(dctMCTemplate("Map")(lNextTagIndex))
Call vctNextNodes.Add(dctTemp) '可能当前节点有很多条出去的线路,就有多个下级节点
End If
Next
If vctNextNodes.Size = 1 Then '下级只有一个节点
Set dctNextNodeTempalte = vctNextNodes(1)
Else
'多个下级节点的情况,就根据优先级来
bFind = False
s = Split(dctCurrentNodeTempalte("FPriorityControl"), ",")
'优先级处理
For i = LBound(s) To UBound(s)
For Each dct In vctNextNodes
If Val(dct("FTagIndex")) = Val(s(i)) Then
Set dctNextNodeTempalte = dct
bFind = True
Exit For
End If
Next
If bFind Then Exit For
Next
End If
'审核扩展信息
Set dctExtInfo = New KFO.Dictionary
dctExtInfo("FCheckComment") = "" '审核意见信息 可为空
dctExtInfo("FAppointCheckerInfo") = "" '指定的下级审核人信息 可为空
dctExtInfo("FAppointRouteInfo") = "" '指定的审核路线信息 可为空
'参数封装完成后,调用中间层接口进行启动审核或者审核操作
'无需传是否启动审核标志,系统知道单据当前所处审核状态,自己会判断该进行启动审核还是审核
Set obj = CreateObject("K3MBOSMultiCheck.cMixedApproval")
bSucceed = obj.Check(sPropsString, dctMCTemplate, dctClassType, dctTableinfo, dctData, _
dctPreNodeTempalte, dctCurrentNodeTempalte, dctNextNodeTempalte, dctExtInfo)
BOS单据审核接口和反审核接口怎么调用?
本文2024-09-16 16:37:00发表“k3wise知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3wise-10408.html