电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

批量恢复丢失关联关系的一种思路(以异常委外用料清单下推的委外领料单,现在两个单据关联性丢失了,上下查、全流程跟踪均无记录为例)

来源:金蝶云社区作者:金蝶2024-09-234

批量恢复丢失关联关系的一种思路(以异常委外用料清单下推的委外领料单,现在两个单据关联性丢失了,上下查、全流程跟踪均无记录为例)

问题描述:

在数据问题处理时,由于二开或其他原因导致大量关联关系丢失的处理,若一个个地重新插回去工作量大,因此本文尝试提供一个较为快捷的处理思路(以异常委外用料清单下推的委外领料单,现在两个单据关联性丢失了,上下查、全流程跟踪均无记录为例)

解决方案:

恢复关联关系思路整理:

0 前提:历史单据如在历史核算期间,则只能修复上下查关系,无法前台通过保存触发保存反写,反写字段需要另外做修复;

--以下最好现在测试环境执行,并以生成脚本的形式上线至正式环境

1 后台查出丢失关联关系的单据,并在上游单据的非重要文本字段(如备注)标记上 * 号

 

2 前台对标记的上游单据批量下推,并暂存生成的下游单据,产生新的关联关系

3.1 取数更新BF表[FTID]字段为原丢失关系的下有单据的明细表主键;更新主键[FROUTEID],可以newID()触发取数

 

SELECT  *

INTO    TEMP_T_BF_INSTANCEENTRY

FROM    ( SELECT     NEWID() AS FROUTEID

     --, TEntry.FROUTEID

                  , TEntry.FINSTANCEID

                  , TEntry.FLINEID

                  , TEntry.FSTABLENAME

                  , TEntry.FSID

                  , TEntry.FTTABLENAME

                  , SPMD_UPDATE.FENTRYID AS FTID

      --, TEntry.FTID

                  , TEntry.FFIRSTNODE

                  , TEntry.FCREATETIME

 

--UPDATE SPMDA_UPDATE SET SPMDA_UPDATE.FPMBILLNO = '@'

          FROM      T_BF_INSTANCE TInst

          INNER JOIN T_BF_INSTANCEENTRY TEntry ON TInst.FINSTANCEID = TEntry.FINSTANCEID

                                                  AND TEntry.FTTABLENAME = 'T_SUB_PICKMTRLDATA'

                                                  AND TEntry.FCREATETIME > '2019-04-24'

          INNER JOIN T_SUB_PICKMTRLDATA SPMD ON SPMD.FENTRYID = TEntry.FTID

          INNER JOIN T_SUB_PICKMTRL SPM ON SPMD.FID = SPM.FID

          INNER JOIN T_SUB_PICKMTRLDATA_LK SPMDK ON SPMDK.FENTRYID = SPMD.FENTRYID

          INNER JOIN T_SUB_PICKMTRLDATA SPMD_UPDATE ON SPMD.FSRCENTRYID = SPMD_UPDATE.FSRCENTRYID

                                                       AND SPMD.FSRCBILLTYPE = SPMD_UPDATE.FSRCBILLTYPE

          INNER JOIN T_SUB_PICKMTRLDATA_A SPMDA_UPDATE ON SPMDA_UPDATE.FENTRYID = SPMD_UPDATE.FENTRYID

                                                          AND SPMDA_UPDATE.FPMBILLNO = '*'

          INNER JOIN T_SUB_PICKMTRL SPM_UPDATE ON SPM_UPDATE.FID = SPMD_UPDATE.FID

                                                  AND SPM_UPDATE.FDOCUMENTSTATUS <> 'D'

--INNER JOIN T_BD_MATERIAL BM ON SPMD.FMATERIALID = BM.FMATERIALID

--INNER JOIN T_SUB_REQORDER SRO ON SPMD.FSUBREQID = SRO.FID

--INNER JOIN T_SUB_REQORDERENTRY SROE ON SRO.FID = SROE.FID AND SPMD.FSUBREQENTRYID = SROE.FENTRYID

--INNER JOIN T_SUB_REQORDERENTRY_L SROEL ON SROE.FENTRYID = SROEL.FENTRYID

          WHERE     1 = 1 ) A;

--ORDER BY SPM_UPDATE.FBILLNO ASC

--      , SPMD_UPDATE.FSEQ ASC;

 

3.2 取数更新LK表[FTID]字段为原丢失关系的下有单据的明细表主键;(修复反写的话)修复数量字段,根据反写规则引用的源单字段联查明细表取数,注意[%OLD]字段对应的是下推携带的数量(如申请数量,应发数量之类);更新主键[FLINKID],需要通过触发种子表取主键

 

SELECT  *

INTO    TEMP_T_SUB_PICKMTRLDATA_LK

FROM    (

--SELECT SPM_UPDATE.FBILLNO,SPMDA_UPDATE.FPMBILLNO,SPMD_UPDATE.FSEQ,TInst.*,TEntry.*,SPMD_UPDATE.FENTRYID

          SELECT    SPMD_UPDATE.FENTRYID AS FENTRYID

     -- , SPMDK.FENTRYID

                  , SPMDK.FLINKID

                  , SPMDK.FSTABLEID

                  , SPMDK.FSBILLID

                  , SPMDK.FSID

                  , SPMDK.FLNKTRACKERID

                  , SPMDK.FLNKSSTATE

                  , SPMDK.FLNKAMOUNT

                

批量恢复丢失关联关系的一种思路(以异常委外用料清单下推的委外领料单,现在两个单据关联性丢失了,上下查、全流程跟踪均无记录为例)

问题描述:在数据问题处理时,由于二开或其他原因导致大量关联关系丢失的处理,若一个个地重新插回去工作量大,因此本文尝试提供一个较为快...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信