文/明道云销售部顾问 潘娟
编辑/蒋礼轩
在制造业中,物料管理是十分重要且繁杂的部分。很多用户在明道云上构建生产类应用都会遇到困难。本文以简单的产品 BOM 搭建为基础,延伸一些层级关联和代码块的使用技巧,为用户提供方法与借鉴。
一、物料管理
1.表单搭建
本文对物料层级定义为四级,分别是原料及半成品的大类划分、大类的细分,以及大类细分的再次细分。
首先是建立表单。我们根据物料层级数量,将表单划分为四个层级。我们的物料分几个层级就建立几张表单。
下一步是对层级之间的数据做关联,高一级与下级之间都为一对多的关系。当我们建立好数据后,我们可以用层级视图来清晰地展示物料详细信息和层级关系。
接下来,我们会遇到一个较难的问题——物料元件编码。我们假设每个分类下的物料编码起始值都为 001,四级元件的编码则是 0001,而且每个物料的显示需要组合上级编码及本级的物料名称。
看下面的图片,我们能更直接地理解物料编码规则,以及其在表单配置中的实现方式。
因为不同的物料下明细物料的编码都要从 001 起始,所以单纯利用系统自带的自动编码字段是无法实现该效果的。那么,这个编码规则就要利用到工作流。
2.特殊编码规则工作流配置
这条工作流的大致配置逻辑如下:
- 设置工作流的触发条件为“新增时触发”
- 查找关联同一个上级的同级同类型的最大编码记录
- 最大编码记录的数值 +1
- 在表单内添加一条数值作为编码运算的辅助内容
- 使用代码块,将运算结果数值转化为可以显示的文本。
还记得前文提到,物料有“原料”和“半成品”之分吗?不同类型的物料有不同的运算规则。因此,我们在第二步找到记录之后,要做物料分类的分支判断,不同的物料类型运行不同的运算节点。
下一步,利用代码块将数值转化为对应格式的文本。 代码块很简单,只有下面两行:
var non = input.num;
return {Str:"."+non.toString().padStart(3, "0")}
最后,将计算数值及转化后的文本编码更新至触发数据的对应字段内,物料的编码及划分就完成了。
二、产品管理
1.产品表单配置
完成物料表单的搭建后,下一步要配置产品表单。作者选取了一个典型的 BOM 表单作为参考的成品效果,并对应地配置表单字段。
除了产品表单以外,我们还需要有一张产品物料清单,以此来罗列每个产品对应需要的半成品以及原料。这样以便物料自动汇总和排序,并且方便制作更简洁的 BOM 打印模板。 每个产品记录将关联其对应的产品物料清单,效果如下图:
2.物料自动汇总工作流配置
工作表触发方式为:
物料清单更新或者新增时触发,同时限定条件产品表及触发的物料类型为半成品(限定触发类型是因为本条工作流最终的效果是需要新增类型为原料的明细,如果流程中不限定类型的话,工作流就会反复被触发)。
当获取到触发的半成品关联的元件明细较多时,这就需要用子流程去处理获取到的元件明细。
同时,因为在子流程中我们需要使用到主流程的数据,所以我们在子流程中就需要去做传递关联项用以绑定关联关系。最后我们在子流程内只需要完成查找及新增后,流程就结束了。
那么,就产品物料内的排序而言,我们仅需要在视图内设置排序关联视图就可以将其完成。
三、打印模板
不少客户都要把 BOM 表单打印出来,以便在生产车间核对。而我们搭建出来的 BOM 清单最终的打印模版配置和效果如下图所示。以下效果图和最初对照搭建的 BOM 表单十分相似。