二开DEMO:如何将替代关系引入到另外一个账套?

参考文档:K3Wise如何添加一个新功能(二)--嵌入到k3主控台应用程序 https://wenku.my7c.com/link/s/M97oC
对参考文档中的工程改造,为他添加一个引入的功能;
一些必要的准备工作:
1.由于该功能是嵌入到k3主控台里,没有k3主控台代码调试就会很麻烦。因此再开发阶段先修改工程类型为standard exe,startup object为Sub Main;

然后再工程中添加一个Module,并添加代码
Public Sub Main()
Dim frm As New frmMain
If MMTS.CheckMts(1) Then
frm.Show
End If
End Sub
模拟一次登陆,这样需要的连接串会到缓存池中;(工程涉及的代码会放在附件中)
2.再MMTSmodule的函数CheckMts中需要将SUBID设置为super,避免登陆失败。
现在看需求:将当前账套A里的替代关系引入到另外一个账套B?(场景为B是一个新账套,基础资料、bom、都已经导入过来了,但是K3没有提供替代关系引入功能)
设计思路:2个账套均是K3账套,物理表结构完全一致,只有物料、bom、制单人、等需要F7的字段需要做内码转化
比如物料1.01再A账套中内码是1000,再B账套中内码是1001,因此传递给B账套数据时,这个记录就应该传1001.
物料替代关系属于BOS单据(FID>0就是bos单)有两种方案:
1是直接sqlserver脚本转内码插入再一个查询分析器里用账套名.dbo.物理表的方式来处理数据(这种方法本文不介绍)

2.通过k3提供的标准组件来处理。

利用bos自带的功能的好处就是他能够触发保存后的中间层事件。并且他的扩展性比较强,用此方法可以完成其他类型的bos单迁移。
BOS单据保存的核心代码如下:
Set oSrv = CreateObject("K3MClass.BillUpdate")
i = oSrv.Save(sDsn, oDataSrv.ClassType, oDataSrv.ClassTypeEntry, oTableInfo, oBillData, dctLinks)
sDsn 账套连接串
ClassType 单据类型对象
ClassTypeEntry 单据类型明细对象
oTableInfo 单据字段描述
oBillData 具体某张单据的明细数据
dctLinks 选单数据(物料替代关系无选单关系,直接传递null即可)
如何构建oBillData?
假如有个单据SubsItem000030(演示账套),内码是1007

再本账套中构建数据包的方法
Set oDataSrv = CreateO
二开DEMO:如何将替代关系引入到另外一个账套?
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



