如何在关联追踪表填充数据,以支持上下查?
问题描述
下游单据审核时,上游单据会有其它符合条件的单据和当前单据建立关联关系,点击上查可以查到这些单据,就需要往关联追踪表里填充数据,但是不知道这个关联追踪表的标识是什么,怎么处理?
解决方法
读取下游单据的数据包,修改其中的关联子单据体数据,填写好源单内码。
调用下游单据保存操作,由系统自动创建关联关系、反写。
请不要自行直接更新关联关系表。
示例:
场景一:只记录单据级追踪,支持上下查即可,无需反写。
示例说明:
手工创建发货通知单,需要关联上查到销售订单,不需要反写,只要支持上下查即可。
事前准备:
扩展发货通知单,修改关联配置属性,反写与记录源单表格,增加新行,选择关联实体为"单据头";
示意代码
Java
// 取销售订单单据头的表格编码
Long srcTableId = ConvertMetaServiceHelper.loadTableDefine("sm_salorder","sm_salorder").getTableId();
// 取单据头的关联子实体行
DynamicObjectCollection linkRows = (DynamicObjectCollection )billObj.get("billhead_lk");
// 添加新的关联子实体行,记录源单内码
DynamicObject linkRow = new DynamicObject(linkRows.getDataEntityType());
linkRow.set("billhead_lk_stableid", srcTableId ); // 表格编码,可唯一对应源单类型+分录
linkRow.set("billhead_lk_sbillid", srcBillId); // 源单单据内码
linkRow.set("billhead_lk_sid", srcBillId); // 源单分录内码。本示例只需对单据进行追踪,此属性填写单据内码即可。如果按分录行追踪,此处要填明细的分录行内码
linkRows.add(linkRow);
场景二:分录行之间追踪,需要在单据体下的关联子实体中,记录源单行信息
示例说明:以发货通知单的物料明细单据体,记录销售订单物料明细单据体行为例
Java
// 读取源单(销售订单)物料明细单据体的表格编码
Long srcTableId = ConvertMetaServiceHelper.loadTableDefine("sm_salorder", "billentry").getTableId();
// 获取目标单(发货通知单)全部单据体行
DynamicObjectCollection targetEntryRows = (DynamicObjectCollection )targetObj.get("billentry");
// 逐行添加关联信息
for (DynamicObject targetEntryRow : targetEntryRows) {
// 获取单据体行下级关联子实体
DynamicObjectCollection linkRows = (DynamicObjectCollection )targetEntryRow .get("billentry_lk");
// 添加关联行,记录源单单据体表格编码、源单单据内码、源单分录行内码
DynamicObject linkRow = new DynamicObject(linkRows.getDataEntityType());
linkRow.set("billentry_lk_stableid", srcTableId ); // 表格编码,可唯一对应源单类型+分录
linkRow.set("billentry_lk_sbillid", srcBillId); // 源单单据内码
linkRow.set("billentry_lk_sid", srcEntryId); // 源单分录内码
linkRows.add(linkRow);
}
如何在关联追踪表填充数据,以支持上下查?
本文2024-09-23 00:25:49发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139410.html