1. 帮助中心 >
  2. 博客 >
  3. 用户分享
返回

进销存的秘密武器——聚合表

2016-07-20 标签: 

文 | Louis

导语

简道云的基本逻辑是表单录入数据,报表实时显示、汇总、编辑删除、处理数据。因此表单就是简道云的数据源,数据库,所有的数据都存在表单中,报表只是实时得从表单中按照一定的规则取出数据,并进行相应的计算,或者进行修改后写入表单。

聚合表的概念,就是在表单之外再建立一个存储数据的“仓库”,这个“数据仓库”不再仅仅是存储数据的明细信息,而是把1张或多张表单整合起来,建立一个可以被表单反过来调用的“汇总表”。聚合表不再属于报表的范畴,因为他是写入数据的,并且这个数据会根据新的数据录入、导入的情况,实时计算,最终实现数据“仓库”。


什么是报表?

报表本身不存在数据,报表是实时读取表单已经录入的数据,经过一定的处理,展现出来。它本身不存储数据。所以表单无法再调用报表的数据。

什么是聚合表?

聚合表要存储数据。在表单录入的时候,聚合表也就录入了数据,经过一定的计算,保存下来。如果有新的数据进来,它也会实时得去更新和计算,因为它存储了数据,所以可以被表单所调用。

我们用框图来比较报表和聚合表:

聚合表最典型的应用,就是进销存系统

通过入库单,出库单,退货单等,构建一个聚合表。在聚合表里让商品的进货数量,出货数量,退货数量产生关系,例如 库存=入库数量+退货数量-出库数量。这样,在聚合表中,就会出现“库存”这个指标,这个指标可以被表单所调用,并且是实时的数据,可以防止“0库存出库”的情况发生。


以前有用户用MAPX的函数来设计库存。


这种实现方法,既有很多不能满足的场景,也存在很多隐患。比如子表单不能被MAPX,MAPX取的值计算后是死的,都是根据后台数据一次性在前端计算出来的值,如果计算结束后后台数据发生了变化,是无法识别的。这里就是没有“仓库”的概念。聚合表巧妙的解决了这些问题。用户使用的时候先构建一个仓库,然后用表单把仓库连接起来就可以了。


举个例子

对于一个最简单的进销存系统而言,库存=Σ(入库数量)-Σ(出库数量),这样我们可以通过一个“入库表单”和一个“出库表单”,来构建一个聚合表:

表单1:入库单


表单2:出库单

这两张表单尽量是对应的,尤其是需要算库存的商品信息部分。然后我们可以根据这两个表单构建聚合表。

回到应用编辑界面,新建聚合表——取名“库存计算”。

和汇总表类似,添加数据来源,设置多表关联(入库单和出库单的关联):

点击确定,然后去添加行列表头和指标。注意,这里和汇总表设置一样,表头为分类条件。做库存,表头选取商品的编号名称等信息,至于出入库数量和库存,在指标中添加:

确定,并保存。我们可以录入数据看看情况:

然后我们去聚合表看看结果:

和汇总表一样,聚合表可以实时计算出库存情况。这时候我们需要回到表单中,让表单可以调取聚合表所计算的库存情况。


注意:这里有3种方式调取聚合表的数据,分别是“数据联动”,“关联数据”和“关联查询”。他们有一定的区别,例如:数据联动是对每个控件进行设置的,他可以取出聚合表的数据,并且填入当前的表单,随表单一起,提交入库,然后这个值不在变化;关联数据和数据联动有点像,区别是关联数据查到的库存,是不随着表单提交入库的,它实时读取聚合表中的库存情况;关联查询不具备选择功能,也不入库。


举例说说“入库”和“不入库”的区别:

某商品A进行了出入库操作,通过数据联动,得到的库存,在每次进货销货的时候,都会记录出入库的时刻,库存的明细情况;

某商品A进行了出入库操作,通过关联数据,得到的库存,不管出入库多少次,看到的都是当前,也就是看数据的时候,的库存情况;

关联查询在这里和关联数据的特性一致。


总结下,需要记录每次出入库前后库存情况的(例如要记录每次的期初余额,期末余额),用数据联动;需要实时显示查阅数据时候的实时库存情况的(只在乎现在的值,不在乎历史明细),用关联数据关联查询。


这里我们用关联查询来做库存:在入库单的入库明细子表单中,添加“关联查询”控件,并且设置这个控件关联到“库存计算”的聚合表,关联字段选择“库存”,并且设置关联条件。


关联条件,即这个入库单/出库单,根据某个值,去聚合表查库存。那么我们这里取商品编号即可,意为:当这个入库单的子表单录入商品编号时,通过这个商品编号去聚合表比对,找到这个商品编号对应的库存值。

出库单也是一样的设置,点击保存。我们来测试看看:

红框内的值,就是聚合表中计算出来的库存值。


以上我们就完成了最简单的进销存系统的设计。当然实际的使用场景肯定更加复杂,要涉及进货,售货,退货,调拨等等。大家可以打开脑洞,尽情设计自己的系统。


聚合表不仅仅可以关联2个表单,也可以是多张,只要将需要关联的数据,分成不同的表单来填写,聚合到一个库存中即可。我们通过前期的测试发现,有些用户竟然做了10张聚合表,这是不需要的。一般而言,1张聚合表就可以胜任库存的需求了,千万别把聚合表当汇总表用哦。


聚合表模块目前没有对外开放

如需试用,请填写表单


Tips:为保证申请成功率,请先参阅帮助文档

已经开通聚合表的用户,才有权限到模板中心安装「进销存」模板。



相关推荐