BOS插件中实现多单据体下推
'此方法适用于目标单为新单的多单据体下推
'由于架构限制,系统本身不支持多单据体下推
'单个单据体的信息携带可通过流程配置实现,另外一个单据体信息携带则需要在“BOS生产任务单”插件中实现
'插件中的m_BillInterface_AfterSelBillBeforeFillData为选单返回数据后填充单据之前抛出的事件
'其中参数dcData就为选单返回后“BOS生产任务单”即将展现的数据情况,可通过更改数据包的值而改变下推后“BOS生产任务单”的数据
'数据包dctData有一项“SelDat”存储有选单或者下推所选的“技术转化单”的单据ID等信息,
'可根据单据ID去数据库中查询“技术转化单”另外一个单据体的信息,然后根据源单据体信息去更改填充数据包dcData中相应单据体对应的项
'dctData数据包结构大概如下:dcData("Page1")存储单据头上字段的值,dcData("Page2")存储单据体1上字段的值,dcData("Page3")存储单据体2上字段的值,以此类推。。。
'以“技术转化单”的工序维护单据体上的【工序代码】字段下推到“BOS生产任务单”的工序维护单据体上的【工序代码】字段上为例
'“技术转化单”【工序代码】字段关键字为“FSourOperID”,“BOS生产任务单”上【工序代码】字段关键字为“FDestOperID”
Private Sub m_BillInterface_AfterSelBillBeforeFillData(ByVal dcData As KFO.Dictionary, ByVal dctLink As KFO.Dictionary)
Dim strSql As String
Dim rs As ADODB.Recordset
Dim sValue As String
Dim vctSelData As KFO.Vector
Set vctSelData = dcData("SelDat")
'vctSelData(1)("FID")为所选的“技术转化单”的单据内码
'根据单据内码去查询“技术转化单”的工序维护单据体上(对应物理表为t_BOS200000007Entry3)【工序代码】字段的值,携带到“BOS生产任务单”的技术工序维护单据体的【工序代码】字段
'【工序代码】为辅助资料,需要联查对应的辅助资料表t_SubMessage,以便查询到【工序代码】的代码,然后根据代码去给字段赋值
'其他小数或者文本类型字段则无需关联查询,可直接赋值
'strSql = "SELECT FText FROM t_BOS200000007Entry3 FID = " & vctSelData(1)("FID")
strSql = "SELECT t1.FSourOperID,t2.FID,t2.FName FROM t_BOS200000007Entry3 t1" & " INNER JOIN t_SubMessage t2 ON t1.FSourOperID=t2.FInterID " & "Where t1.FID = " & vctSelData(1)("FID")
Set rs = m_BillInterface.K3Lib.GetData(strSql)
If Not rs Is Nothing Then
For i = 1 To rs.RecordCount
'如果要填充【工序代码】字段的目标行在数据包中并不存在,则需要新增一行数据包
If dcData("Page3").UBound < i Then
m_BillInterface.InsertNewRowAndFill 3, i
End If
'sValue= rs("FText")
sValue = rs("FID") '查询到的“技术转化单”上【工序代码】字段的代码值
'将查出来的值sValue赋到“BOS生产任务单”的【工序代码】字段上去("FDestOperID"为【工序代码】字段的关键字FKey)
m_BillInterface.SetFieldValue "FDestOperID", sValue, i
rs.MoveNext
Next
End If
End Sub
BOS插件中实现多单据体下推
本文2024-09-22 16:40:02发表“k3wise知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3wise-89413.html