金蝶K3单据增加单据下推关联关系(后台调整字段下推逻辑)

114 篇文章 4 订阅

现状:BOS里边销售出库单增加了一个单据字段,引用的是BOS基础资料里边的数据,在BOS里边是没有设置单据下推携带关联的地方,但是在单据自定义里边又选不到BOS基础资料。

需求:增加的这个字段需要引用继承上游销售订单的同名字段数据

操作方法:

  1. 使用BOS在销售出库单增加该字段,数据来源为基础资料里边BOS基础资料里边的ABC分类维护,设置完毕后直接保存;

  2. 以同样的方法在BOS里边设置销售出库单的字段;
  3. 使用单据自定义打开销售出库单,可以发现选不到BOS里边的资料;
  4. 将字段数据来源改为其他基础资料,比如改成备注,只要上游单据能够出现携带数据即可,选好以后保存;
  5. 重新打开BOS销售出库单,会发现变为空了,重新选择一下数据来源类别,然后保存即可;
  6. 改造数据库-对比数据:
    ---对比新增的2列数据是否有差异,如有差异,按照上游字段进行调整,记录下单据标识码和新增列名
    select * from ICTemplateentry 
    where (fid='s01' and FCtlIndex=66) or (fid='b01' and FCtlIndex=73)
    

  7. 改造数据库-查询下推关联表记录;

    select FColName,FName,FAction from ICSelbills where FID='b01' and  FTableName='SEorderentry' and FDstCtlField='FEntrySelfB0173'


  8.  

    改造数据库,更新下推关联数据携带字段与对应取值;

    --更新下推关联表数据
    update ICSelbills set FColName='FEntrySelfS01660',FName='FEntrySelfS0166',FAction='(SELECT FID FROM ICDevGroupInfo WHERE FID = u1.FEntrySelfS0166)' where FID='b01' and  FTableName='SEorderentry' and FDstCtlField='FEntrySelfB0173'and FDK=0
    update ICSelbills set FColName='FEntrySelfS01661',FName='FEntrySelfS0166',FAction='(SELECT FName FROM ICDevGroupInfo WHERE FID = u1.FEntrySelfS0166)' where FID='b01' and  FTableName='SEorderentry' and FDstCtlField='FEntrySelfB0173'and FDK=1
    update ICSelbills set FColName='FEntrySelfS01662',FName='FEntrySelfS0166',FAction='(SELECT FNumber FROM ICDevGroupInfo WHERE FID = u1.FEntrySelfS0166)' where FID='b01' and  FTableName='SEorderentry' and FDstCtlField='FEntrySelfB0173'and FDK=2


     

  9. 新增一张销售订单,测试下新增字段是否能够选到值;

  10. 保存销售订单,下推销售出库单,验证下是否能够正常携带下去;

OVER

btw:如果不想倒腾单据自定义和BOS,可以直接调整后台数据库,参考如下方法:
--老单模板相关表ICTransactionType、ICTemplate、ICTemplateEntry
--新单相关模板表ICClassType、ICClassTableInfo
--新单下推老单单据转换流程相关模板表:
--icclasslink(单据转换流程整体信息)、ICSelBills(单据转换流程字段明细对应关系信息) ICTableRelation(单据转换流程表之间的连接关系信息)

ICSelBills表各个字段解释:
FID 需要进行关联关系调整的单据内码
FFieldName 关联字段名称
FDstCtlField 需要调整的单据字段内码
FDK 字段类别
FSelType 打开方式
FColName 上游单据携带字段内码+序号,0开始
FName 上游单据携带字段内码
FTableName 上游单据表名
FTableAlias 表范围
FAction 动作
FROB 功能标识
FAllowEdited 是否允许编辑

--例如要增加委外订单的【字段A】下推到调拨单的【字段B】的效果
--只需在后台增加一条对应单据转换流程的【字段A】下推【字段B】的明细对应关系即可,即向明细表ICSelBills插入一条正确记录

--先根据单据名称查询出单据类型ID,例如查询出委外订单ID为:1007105,调拨单ID为:-41
SELECT * FROM ICClassType WHERE FName_CHS LIKE '委外订单'
SELECT * FROM ICClassType WHERE FName_CHS LIKE '调拨单'
--另外老单还需要查询出对应的老单模板ID,例如查询出调拨单的FTemplateID为:D01
SELECT FTemplateID,* FROM ICTranSactionType WHERE FName like '调拨单'
--根据源单类型ID(1007105)和目标单类型ID(-41)查询对应的单据转换流程模板信息,查出字段FFieldName的值,为了后边向ICSelBills表插入记录用
--例如查询出对应流程的FFieldName为:1007105
SELECT FFieldName,* FROM ICClassLink WHERE FSourClassTypeID=1007105 AND FDestClassTypeID=-41

--再分别查询出【字段A】和【字段B】的关键字,用于插入字段明细对应关系
--新单的单据字段FKey可根据单据类型ID(1007105)和字段名称(字段A)在ICClassTableInfo里查询
--例如查出来【字段A】的关键字为:FTextA
SELECT FKey,* FROM ICClassTableInfo WHERE FClassTypeID=1007105 AND FCaption_CHS LIKE '字段A'
--老单单据头字段关键字可根据单据FTemplateID(D01)和字段名称(字段B)在ICTemplate里查询,例如查出来【字段B】的关键字为:FTextB
SELECT FFieldName,* FROM ICTemplate WHERE FID='D01' AND FCaption Like '%字段B%'

--最后根据上面查询出来的FTemplateID,FFieldName,以及【字段A】和【字段B】的关键字,向明细对应关系表插入对应关系记录
--D01 1007105 FTextA FTextB
INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
VALUES ('D01','1007105','FTextB',2,0,'FTextA','FTextA','ICSubContract','v1','',0,16384)
INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
VALUES ('D01','1007105','FTextB',2,1,'FTextA','FTextA','ICSubContract','v1','',0,16384)
INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
VALUES ('D01','1007105','FTextB',2,2,'FTextA','FTextA','ICSubContract','v1','',0,16384)
GO
--其他新单下推老单的单据转换流程后台增加明细字段对应关系,亦可参照以上步骤进行
--备注:请先在测试帐套中验证无误后,再到正式帐套中执行!

  • 7
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值