金蝶组装单子件出库到旺店通生产出库单:单策略同步实战
这个策略解决什么问题
组装单是制造企业里很常见的一类业务单据:成品入库的同时,子件要按BOM比例从仓库扣减。在金蝶云星空里这体现为「组装单(子件出)」,对应的下游动作是仓库按子件明细出库。当仓库作业跑在旺店通WMS上时,就需要把金蝶的组装单子件行,按单据维度推过去生成生产出库单。这条策略解决的就是"账务系统一扣、仓库系统一放"的对齐问题,避免子件账实漂移。
数据流向与字段映射
数据流向是单向的:金蝶云星空(源)→ 轻易云(中间层,承担字段映射、增量过滤、异常重试)→ 旺店通WMS(目标)。
源端以 executeBillQuery 查询组装单(子件出)单据头与子件明细行,关键字段包括 FID、FBillNo、FDocumentStatus(C=已审核)、FStockOrgId.FNumber、FDate、FBillTypeID 等。增量起点通常以 FModifyDate 作为水位线。
中间层做三件事:单据状态过滤(只推 C 状态)、表头表体分阶段处理、空值与编码补齐。
目标端通过 WDT_WMS_STOCKOUT_CREATE 创建生产出库单,整体入参包裹在 deliveryOrder 对象下,明细行用 orderLines 数组承载(数组元素为 details)。
关键字段对照(精简):
| 业务含义 | 金蝶云星空(源) | 轻易云中间层处理 | 旺店通WMS(目标) |
|---|---|---|---|
| 单据编号 | FBillNo | 直接透传 | deliveryOrder.orderNo |
| 业务日期 | FDate | 格式归一 YYYY-MM-DD | deliveryOrder.orderDate |
| 库存组织 | FStockOrgId.FNumber | 编码映射集中管理 | deliveryOrder.warehouseCode |
| 单据状态 | FDocumentStatus | 仅 C 状态放行 | 不直接映射,状态机由WMS自管 |
| 子件行 | FSubEntity 数组 | 按行展开,逐行映射 | orderLines[].sku, orderLines[].qty |
| 子件物料编码 | FSubEntity.FMaterialId.FNumber | 通过物料主数据映射 | orderLines[].sku |
| 子件数量 | FSubEntity.FQty | 数值校验 | orderLines[].qty |
在轻易云上如何配置
在轻易云数据集成平台里,这条策略落到一个「集成方案」下,包含两个数据源节点和一个写目标节点。
源节点配置要点:API 选 executeBillQuery,方法 POST,开启 autoFillResponse;增量字段选 FModifyDate,配合 idCheck=true 做去重;过滤条件带上 FDocumentStatus='C',避免把暂存、创建中、审核中的单据推过去。
中间层映射:建议把库存组织、物料编码、客户/供应商编码这类强敏感字段单独建一张「编码映射表」,统一维护,不要散落在每条策略里——这是轻易云客户里最常见也最稳的做法,表头表体分阶段、增量与全量双轨同样适用于本策略。
目标节点配置要点:API 选 WDT_WMS_STOCKOUT_CREATE,方法 POST;表头用对象注入,明细用数组注入,details 作为子文档来源;返回字段留空(写接口无需回填主键到源端)。
调度上源端用 1-59/2 * * * *,目标端用 1-59/3 * * * *,留出分钟级的时间窗给中间层做映射和异常重试。
实施步骤
我们建议分三个阶段推进。
第一阶段:增量起点。先在金蝶侧确认一个明确的水位起点(例如某个具体日期),策略上线后只推该时间点之后的增量单据;不要一上来就全量,避免历史数据混杂在第一次同步里。
第二阶段:全量触发。增量稳定一周后,单独触发一次历史数据回灌(通常按单据日期分批),回灌完成后立即把调度切到常规增量。
第三阶段:调度频率。源端每 2 分钟轮询一次已审核的组装单变更,目标端每 3 分钟消费一次中间层消息;遇到接口限流或网络抖动,轻易云的失败重试策略会按指数退避自动重抛。
上线后建议在轻易云的运行监控里盯三个指标:源端拉取条数、目标端写入成功率、表体数组展开行数(防止 details 漏行)。
踩坑复盘
坑一:单据状态没过滤干净。 典型错误是只过滤了 FDocumentStatus='C',但忽略了 D(重新审核)状态。重新审核中的单据字段可能不稳定,推过去容易出现数量不一致。稳妥的做法是在过滤条件里显式排除 D。
坑二:表头表体混在一层。 金蝶的组装单是表头+子件行的两层结构,旺店通的出库单要求明细以数组形式呈现。如果在轻易云里没有把 FSubEntity 显式声明为数组源,写接口就会只收到表头、丢光明细——生产现场表现为"出库单创建了但没行"。
坑三:编码映射散落。 库存组织编码、物料编码如果在每条策略里各自写转换公式,三五个月后某个组织改编码,整张网都得改。集中管理的编码映射表能把这事儿降到一次修改。
坑四:增量起点误用创建时间。 用 FCreateTime 做水位线,会漏掉反审核后重新提交的单据。用 FModifyDate 更稳。
坑五:目标端成功但源端重复推送。 旺店通返回成功,但轻易云没拿到回执标识,下次轮询又会拉一遍。建议在源端用 FBillNo 做幂等键,配合中间层去重表拦截重复。
适用场景与不适用场景
适用:制造企业,金蝶云星空做账务与BOM管理,旺店通WMS做仓内作业,需要把组装/拆卸类单据的子件出库实时或准实时同步到WMS。不适用:纯分销场景、无BOM的贸易型企业、以及要求"双写"(两边同时落账)的强一致性场景——本策略是单向同步,账实差异仍需月结对账兜底。