货品组装
适用范围:存货管理 → 组装拆卸 → 货品组装
内容:组装单的界面构成、数量口径与联动公式、标准操作流程、生效记账效果、出错修正标准、提示速查
更新日期:2026-10-13
目录
1. 功能简介
货品组装用于把若干原料按配方组装成成品并同步完成库存与账务处理:原料从领用仓库出库、成品入到完工仓库,生效时同时记账(并可生成会计凭证)。
- 单据头只需选一个组装货品并填组装数量,系统自动按【货品关系设置】里的配方展开全部原料明细行。
- 明细行可以手工调整实际用量(多用、少用、补加额外物料),调整结果是最终出库与成本计算的依据。
- 生效前可用【试算成本】按记账规则预先算出各原料出库成本与成品入库成本,检查是否合理。
- 一张组装单 = 一次实际生产记录:库存减少、库存增加、成本结转都在【生效】这一步一次完成。
相关功能:配方维护见【货品关系设置】;多品种一次配齐并批量生成见【批量组装】;反向(成品拆成原料)见【货品拆卸】;事后核对见【货品组装查询】。
2. 菜单入口与界面总览
2.1 菜单入口
存货管理 → 组装拆卸 → 货品组装打开"货品组装"单据窗口(新单先按【新增单据】)。
2.2 单据头字段
| 界面标签 | 字段 | 录入方式 | 说明 |
|---|---|---|---|
| 单据号 | fHandwrtten | 可手工 | 新增单据后焦点自动落在此处 |
| 单据日期 | fBillDay | 可改 | 决定记账所属会计期间 |
| 组装货品 | fGoodsID | 点按钮或输入选择 | 只能选"组装物料"(组合品 fCombination=1) |
| 组装数量 | fQuantity | 必填 | 旁边显示该成品的基础单位 |
| 完工仓库 | fInStoreID | 点按钮或输入选择 | 成品入库仓库;选择后自动填"单据摘要来源"(货品组装+仓库编号 名称) |
| 领用仓库 | fOutStoreID | 点按钮或输入选择 | 原料出库仓库,试算与生效都按此仓取成本 |
| 入库单价 | fCostPrice | 只读(灰底) | 只能由【试算成本】或【生效记账】写入 |
| 入库金额 | fCostMoney | 只读(灰底) | = 入库单价 × 组装数量(界面自动计算) |
| 明细条码 | 辅助输入框 | 默认隐藏 | 仅"散装称重"货品显示:扫条码/输重量自动加行 |
| 单据摘要 | fBillRemark | 可填 | 会带入库存流水与凭证摘要 |
2.3 明细网格列(按界面顺序)
| 列标题 | 字段 | 可编辑 | 含义 |
|---|---|---|---|
| 物料编号 / 物料名称 / 单位 | fMaterielNo / fMaterielName / fBaseUnit | 否(灰底) | 原料档案快照 |
| 单品领用数量 | fFinishQty | 是 | 生产 1 个成品实际耗用该原料的数量 |
| 整体领用数量 | fBillQty | 是 | 本单实际出库数量 = 组装数量 × 单品领用数量;底部合计 |
| 标准售价 / 标准进价 | fSaleSprice / fPurchaseSprice | 否(灰底) | 原料档案价格快照,仅参考,不参与成本记账 |
| 整体差异数量 | fDiffQty | 否(系统强制只读) | 实际领用 −(组装数量 × 单品标准用量),正数=超耗,负数=节约 |
| 发出单价 | fCostPrice | 否(只读) | 该原料本次出库成本单价,由试算/记账写入 |
| 成本金额(行) | fCostMoney | 否(只读) | = 发出单价 × 整体领用数量;底部合计 |
隐藏的参考字段:fDoQty(整体标准用量)、fDoOneQty(单品标准用量,即配方用量,也是成本分摊比例基准)。
2.4 下方页签与状态栏
| 位置 | 内容 |
|---|---|
| 页签 "结存信息" | 当前明细行原料在领用仓库的结存明细(切换明细行自动刷新);开工前先看这里判断是否会库存不足 |
| 页签 "行明细" | 当前明细行的完整字段记录视图 |
| 状态栏 | 制单人、记账人、记账日期、单据状态、附件等 |
3. 标准操作流程
流程总览:
① 新增单据 → ② 选组装货品(自动展开配方)→ ③ 填组装数量
→ ④ 核对/调整实际用量 → ⑤ 选完工仓库与领用仓库 → ⑥ 试算成本 → ⑦ 生效步骤 ① 新增单据
点【新增单据】(Ctrl+I),在"单据号"录入或留空由系统给号;确认单据日期属于当前会计期间(跨期单据生效后会记入对应账期,且事后无法反生效)。
步骤 ② 选择组装货品(自动展开配方)
点"组装货品"按钮或直接在框内输入名称/编号选择。选中后系统自动:
- 按【货品关系设置】的配方生成原料行(顺序、行号即配方顺序);
- 每行的整体领用数量 = 配方用量 × 组装数量,单品标准用量 = 配方用量;
- 写库并重新打开明细网格。
⚠️ 重复选择组装货品会先清空本单全部明细行再重建,你手工添加的行、改过的用量都会丢失。要改数量请只改"组装数量"(会自动换算),不要反复重选货品。
配方展开只有 1 层:A=B+C、B=D+E 时,组装 A 只会得到 B、C 两行,D、E 不会自动出现——半成品必须先单独组装入库,再参与上层组装。
步骤 ③ 填写组装数量
在"组装数量"录入本完工数量,离开输入框后系统自动按新的数量重算所有行的整体领用数量与差异数量(散装称重货品除外)。
步骤 ④ 核对并调整实际用量
生产常有超耗/节约,按实际调整,两种改法等价、系统自动互相换算:
- 改整体领用数量 → 系统回算单品领用数量 = 整体 ÷ 组装数量;
- 改单品领用数量 → 系统回算整体领用数量 = 组装数量 × 单品数量;
- 差异数量自动显示,不需要(也不能)手工填;
- 需要临时增加配方外物料(如包装膜、标签):用【新增明细】(Ctrl+Ins) 加行选料并填数量;
- 需要去掉某原料:选中该行用【删除一行】(Ctrl+Del);
- 需要沿用上一张单的实际用量:用【单据复制】(Ctrl+B) 把同位置行的"单品领用数量"带过来。
数量必须 > 0:录入 0 或负数会提示"领用数量必须大于0!" / "单位用量必须大于0!"且不写入。
步骤 ⑤ 选择完工仓库与领用仓库
- 完工仓库:成品入到哪;领用仓库:原料从哪出(车间/中央厨房领料仓);
- 两个仓库不同时,请核对"结存信息"页确认领用仓库有货;
- 若把成品本身也作为原料且与成品入到同一个仓库,系统会拦截(见第 8 章)。
步骤 ⑥ 试算成本(强烈建议,不改变库存)
点【试算成本】:系统按与记账完全相同的规则逐行模拟原料出库取价(含同一物料多行连续扣减),把结果写入:
- 明细"发出单价"(各行出库成本价);
- 单据头"入库单价" = Σ各行成本金额 ÷ 组装数量,"入库金额"随之显示。
弹窗显示"试算完成!入库成本价 / 入库金额",如有异常会附"注意:…"(结存不足、零结存、账簿单价异常等)。试算只做预算和回写价格,不出库、不入库、不记账,可反复试算。
步骤 ⑦ 生效(记账)
点【生效】(F8)。系统先做完整检查(见第 5 章),通过后:原料出库 + 成品入库 + 成本结转(+ 凭证)一次完成,单据状态变为已生效并自动关闭。
生效前必须满足:单据已选组装货品、完工仓库、领用仓库,组装数量 ≠ 0,明细至少 1 行,每行有物料且数量 ≠ 0,且通过库存检查;若启用审批流,还必须先审批通过。
4. 数量口径与联动公式
配方展开(选货品时):
单品标准用量 fDoOneQty = 配方用量 GoodsRelate.fQuantity
整体标准用量 fDoQty = 组装数量 × 单品标准用量
整体领用数量 fBillQty = 组装数量 × 单品标准用量 ← 初值,可手工改
单品领用数量 fFinishQty = 配方用量 ← 可手工改
手工改「整体领用数量」Q 时:
单品领用数量 fFinishQty = Q ÷ 组装数量 (组装数量为 0 时置 0,不报错)
手工改「单品领用数量」q 时:
整体领用数量 fBillQty = 组装数量 × q
任何时刻:
整体差异数量 fDiffQty = 整体领用数量 − 组装数量 × 单品标准用量
(> 0 超耗;< 0 节约;= 0 与配方完全一致)
改「组装数量」N 时(对每一行):
整体领用数量 = N × 单品领用数量
整体标准用量 = N × 单品标准用量
整体差异数量随之重算成本口径:
明细 成本金额 = 发出单价 × 整体领用数量
单据头 入库单价 = Σ(各原料出库成本金额) ÷ 组装数量
单据头 入库金额 = 入库单价 × 组装数量- 出库成本取领用仓库的移动加权结存单价;结存不足、零结存或账簿单价异常时按仓储选项的"零结存取价方式"取价(试算会在"注意"中提示,记账按同样规则)。
- 配方上的"标准进价 / 标准售价"只是参考快照,不参与组装成本计算。
- 模块已停用"按标准售价核算",组装拆卸出入库一律按成本价。
5. 行为标准(系统保证)
| 标准项 | 系统行为 |
|---|---|
| 只能选组合品 | 组装货品选择条件为 fCombination=1;非组合品选不进来。 |
| 配方单层展开 | 只展开直接原料,不递归下层;半成品需分步组装。 |
| 重选货品覆盖明细 | 每次选组装货品先删除本单全部明细行再按配方重建,手工行与已改用量丢失。 |
| 数量必须大于 0 | 明细数量录入 ≤0 时提示并不写入;单据数量与每行数量都纳入生效前检查。 |
| 除零保护 | 组装数量为 0 时不计算单位用量(置 0),不会因除零报错。 |
| 库存检查 | 每行按"领用仓库结存 ≥ 整体领用数量"校验;若站点开启"允许零出库"则不拦截(会形成红字库存,成本按零结存取价)。 |
| 同仓限制 | 完工仓库与领用仓库相同、且原料清单中包含成品自身时被拦截并清空仓库选择。 |
| 无配方走散装称重 | 选中的组合品若没有任何配方行,单据自动进入"散装称重"模式:显示"明细条码"输入框,"单品/整体领用数量"列变灰锁定,可连续扫条码按重量自动加行出库。 |
| 入库价格不可手工输入 | 入库单价、入库金额、各行发出单价均为只读,只能由【试算成本】或【生效记账】写入,防止人为造成本。 |
| 打开即锁定单据 | 打开单据编辑前先申请锁定,锁定成功才真正打开;生效(或反生效)完成后自动解锁。因此同一张单不会多人同时修改。 |
| 筛选状态禁止生效 | 明细网格处于筛选(过滤显示)状态时不允许生效,需先取消筛选。 |
| 已生效不可编辑 | 编辑/删除按钮只对草稿单(状态=未生效)开放;红字单不可编辑。 |
| 只读打开 | 从【货品组装查询】等入口打开时为只读;只读状态下【试算成本】提示不能试算。 |
生效前检查顺序(不通过即中止并给出对应原因):
组装货品 → 完工仓库 → 领用仓库 → 同仓限制 → 组装数量 → 明细行数
→ 逐行(物料 / 数量 / 库存)6. 生效(记账)会发生什么
| 项目 | 内容 |
|---|---|
| 执行顺序 | ① 先按明细逐行从领用仓库出库(原料腿);② 成功后再把成品入到完工仓库(成品腿)。任一步失败即中止,不会只出一半。 |
| 库存变化 | 领用仓库:各原料减 整体领用数量;完工仓库:成品加 组装数量。 |
| 成本形成 | 出库按领用仓库移动加权结存单价逐行取成本;成品入库单价 = 全部原料出库成本合计 ÷ 组装数量(与库存账入库单价同源)。 |
| 单据回写 | 主表 fBillState(已生效)、fPostDay(记账日期)、fPostManID(记账人)、fCostPrice、fBillSum;明细各行 fCostPrice、fBookIndex(账页号)。精度为 4 位小数。 |
| 会计凭证 | 站点启用财务核算(并已取得财务接口)时自动生成凭证:逐行贷记各原材料科目,按合计借记成品科目,借贷同源必平;凭证状态回写 fAcctState。未启用财务核算时不产生凭证,库存与成本照常结转。 |
| 科目要求 | 启用凭证时,成品与全部原料都必须已维护存货科目,否则记账报错(缺成本/缺科目类提示)。 |
| 后续影响 | 成品成本进入库存账最新成本,成为后续发出成本与拆卸分摊的基础。 |
7. 做错之后的修正标准
| 情形 | 标准处理 |
|---|---|
| 单据尚未生效 | 直接【编辑单据】改数量/仓库,或【删除单据】作废重做。已打印过的单据删除需要"可删除已打印单据"权限(或超级用户)。 |
| 单据已生效,且站点点允许反生效 | 再次点【生效】即为反生效(撤销出库、入库与记账)。硬性条件:单据所属会计期间必须等于当前账期,跨期无法反生效。 |
| 单据已生效,站点不允许反生效 | 用【单据冲红】生成一张红字冲销单(组装单支持冲红,冲红取反字段:fBillSum、fQuantity、fBillQty、fFinishQty),再录入正确的单据。红字单不可编辑。 |
| 跨账期发现做错 | 反生效不可用 → 冲红 + 重做;不得通过改单据日期把已生效单据拉回当期。 |
| 成本算错(零结存取价导致入库成本异常) | 冲红重做,并先补齐该原料的成本资料来源;单纯重算不会改变已结转的库存成本。 |
| 明细少加了原料 | 未生效:【新增明细】补行;已生效:只能冲红重做。 |
8. 提示信息速查表
| 提示信息 | 出现时机 | 含义与处理 |
|---|---|---|
| "请挑选组装货品" | 生效检查 | 未选成品,回到步骤 ② |
| "请挑选完工仓库" / "请挑选领用仓库" | 生效检查 / 试算 | 补齐两仓;试算时提示为"请先挑选××,才能试算成本!" |
| "请输入组装货品数量" | 生效检查 | 组装数量为 0 |
| "明细行数为0" | 生效检查 | 该成品没有配方行,或全部被删;检查【货品关系设置】 |
| "单据体%d行没有物料!" | 生效检查 / 试算 | 有空行(新加的明细没选料),补齐或删除 |
| "单据体%d行没有数量!" | 生效检查 / 试算 | 该行用量为 0,补录实际用量 |
| "单据体%d行数量大于可用出库的库存数量!" | 生效检查 / 试算 | 领用仓库库存不足:先补库存、换领用仓库,或先做领料调拨 |
| "货品[X]与原料[Y]不能在同一个仓库组装" | 选仓库时 / 生效检查 | 成品与原料不能同仓共存;换完工或领用仓库。(注:该提示当前两处名称都显示原料名,属显示缺陷) |
| "领用数量必须大于0!" / "单位用量必须大于0!" | 改数量 | 数量为 0 或负数不写入,请改为正数 |
| "单据处于只读状态,不能试算成本!" | 点【试算成本】 | 从查询入口打开或非编辑模式;需从【货品组装】编辑该单 |
| "已生效或关闭的单据不允许试算成本!" | 点【试算成本】 | 已生效单据成本已定,改用冲红流程 |
| "单据表没有打开,无法试算成本!" / "没有可试算的单据内容!" | 点【试算成本】 | 尚未新增/打开单据 |
| "试算完成!入库成本价:X.XXXX 入库金额:X.XX" | 试算成功 | 正常结果;注意会随成本口径变化 |
| "注意:物料X结存不足:结存…出库…,超出部分按零结存成本…计算!" | 试算结果 | 领用仓库不够,记账会形成红字库存且成本偏低,先补库存 |
| "注意:物料X没有结存,按零结存成本…计算!" | 试算结果 | 零结存取价,成本可能与实际不符 |
| "注意:物料X账簿结存单价异常(…),改按零结存成本…计算!" | 试算结果 | 账簿单价为 0/异常,请核查该仓该料的历史记账 |
| "单据未通过检查!原因:…!请检查输入信息!" | 试算 / 生效 | 按"原因"逐条修正 |
| 已生效 / 关闭单据不能编辑、删除等提示 | 点【编辑单据】【删除单据】 | 走第 7 章反生效或冲红流程 |
| "检查单据信息出错! 原因:…" | 生效检查过程异常 | 记录原因反馈系统管理员(同时写入错误日志) |
| "执行货品组装插入明细表出错 原因:…" | 选货品展开配方失败 | 配方数据或数据库异常,联系管理员并核对【货品关系设置】 |
9. 常见问题(FAQ)
Q1:为什么"组装货品"里选不到我要组装的那个货?
它不是"组装物料"(组合品)。到货品档案把该货品标记为组装物料(fCombination=1),并确认行业、状态正确;配好配方后再回本功能。
Q2:为什么明细是空的(展开不出原料)?
该货品没有配方行,或配方行的用量全为 0。到【货品关系设置】补配方并填数量(数量为空是常见问题源)。若配方完全为空,本单会自动进入"散装称重"模式而不是报错。
Q3:配方改了用量,单据上的数量为什么没变?
单据明细在"选组装货品"那一刻展开,配方后续修改不会自动同步。请在该草稿单上重新选一次组装货品(会清空手工行),或直接手工调整数量。
Q4:实际多用了一包料,怎么录?
改"整体领用数量"(系统自动换算单品用量)或改"单品领用数量";差异数量列会自动显示超耗量。不要在【货品关系设置】里为一次性超耗改配方。
Q5:入库单价为什么不能直接填?
按标准它是算出来的:入库单价 = Σ原料出库成本 ÷ 组装数量。可点【试算成本】预看得到的数值,生效时系统按实际账簿结存重新计算并覆盖。
Q6:试算成本会不会影响库存和账?
不会。试算只按记账规则做一次模拟并把结果写回单据的价格字段供你核对,不出库、不入库、不记账,可反复执行。
Q7:试算出来的成本和生效后的成本可能不一样吗?
可能。试算是"以当前账结存的预演",若期间该原料在该仓又发生出入库,生效时结存单价会变。要看最终成本,以生效后的单据/库存账为准。
Q8:为什么有"整体差异数量"这一列,还要单独给"标准用量"?
标准用量来自配方,是考核依据;差异数量 = 实际领用 −(组装数量 × 配方用量),用于超耗/节约分析,所以始终只读。
Q9:能不能一次组装多个品种?
本窗口一次一张单、一个成品。多品种批量作业请用【批量组装】向导。
Q10:单据日期填成了上个月,生效后能反悔吗?
反生效要求单据账期 = 当前账期,跨期不能反生效;只能【单据冲红】再重新录入。
Q11:完工仓库和领用仓库能相同吗?
一般可以,但如果配方里包含成品自身(如同一仓库内的拆分组装),系统会拦截,需将两仓分开。
Q12:生成了凭证但借贷不平衡或提示科目问题?
说明成品或某原料未维护存货科目。请补齐科目后重做;未启用财务核算的站点不会生成凭证。
10. 按钮与快捷键速查
| 按钮 | 快捷键 | 作用 | 可用条件 |
|---|---|---|---|
| 【新增单据】 | Ctrl+I | 新建一张组装单 | 编辑模式打开本窗口 |
| 【编辑单据】 | Ctrl+E | 修改草稿单 | 单据为未生效、无在途审批、非红字 |
| 【删除单据】 | Ctrl+D | 删除单据 | 草稿单;已打印单据需专门权限 |
| 【单据复制】 | Ctrl+B | 把上一张同位置行的"单品领用数量"带入本单 | 本单已生成并已有配方行 |
| 【查找单据】 | Ctrl+Q | 按条件定位单据 | — |
| 【生效】 | F8 | 检查并记账(原料出库 + 成品入库 + 成本/凭证);已生效单在允许反生效时执行反生效 | 编辑模式 + 生效权限 + 审批通过或无审批流 |
| 【全部生效】 | Ctrl+F8 | 生效当前列表中的全部单据 | 同上 |
| 【单据冲红】 | — | 生成红字冲销单(不支持反生效的站点的标准纠错方式) | 单据已生效 |
| 【新增明细】 | Ctrl+Ins | 加一行配方外物料 | 非只读 |
| 【删除一行】 | Ctrl+Del | 删除当前明细行 | 非只读 |
| 【清除明细】 | — | 删除全部明细行 | 非只读 |
| 【查找明细】 | Ctrl+F | 在明细中检索定位 | 生效后不能再用筛选状态生效 |
| 【试算成本】 | — | 按记账规则预算并回写价格 | 草稿单 + 货品/两仓/数量/明细齐备 |
| 【上一张】/【下一张】 | Ctrl+P / Ctrl+N | 翻页浏览单据 | — |
| 【打印】/【附件】 | — | 打印组装单 / 挂附件 | — |
| 【申请】【查询状态】【查看进度】 | — | 启用审批流时提交与跟踪审批 | 启用审批流 |
| 【操作帮助】 | — | 打开本功能在线帮助 | — |
| 【退出单据】/【退出】 | — | 关闭当前单据 / 关闭窗口 | 未提交修改会提示 |
变更记录
| 日期 | 说明 |
|---|---|
| 2026-10-13 | 首次整理为在线帮助;同日随 P0 修复(配方展开后主表行数 fLineCount 未回填,导致手工新增行行号与配方首行重号、成本串号)核对界面、数量联动与记账口径 |
