ESAP达摩院 思想有多远,我们就能走多远

玩聚表的N种姿势(附六一库)

2018-06-01
       

本文记录了村长迁移到聚表后的各种感受,外加各种给力的高端功能玩法。

sp模式

sp全称是spreadsheet,通常聚表模板默认使用该模式,其最大特点是客户端不再依赖EXCEL,因此带来了诸多好处,例如:

  • 妈妈再也不怕天天碰到EXCEL加载项禁用导致的ES闪退啦;
  • 不怕经常莫名碰到Automation 错误
  • 不会看到各种ActiveX控件出错
  • 不用担心装了AutoCAD后,ES无法启动或启动时冒出安装CAD对话框;
  • 不用担心因为不小心关掉EXCEL表,或因EXCEL卡死导致整个系统退出;
  • 不用担心装了office2016,es安装不识别;
  • 不用担心使用win10更新后,冒出各种问题,如ES连续填报保存时崩溃;
  • 不会看到office检测到此文件存在一个问题。要保护您的计算机……

除了完美避开各种office软件本身的坑,sp模式还带来了窗口尺寸可调,多窗口同时打开等灵活功能,怎一个美字了得?

表/字段模式

  • 聚表的数据表可定义为普通表临时表映射表,支持灵活切换。

  • 最实用的是字段可以设置为不存,这样我们就不用像ES那样费力依靠bug技术制作UD表,直接一个表搞定,简单定义,轻松维护,快乐玩转3NF

触发器/存储过程

  • 聚表原生支持触发器/存储过程,当然,这跟SQL的触发器/存储过程有些区别。

  • 与ES相比,聚表不需要费劲的使用vba来调用存储过程,只要设置一下,写好sql代码即可。

  • 使用存储过程+中间表这套 重器 ,官方开发了稳定支撑1000万行级的大型企业的仓储系统。

此项暂不赘述,本文后面介绍如何使用万能提数来快速实现适合中小企业的系统功能。

APP

聚表包含一个html5类型的移动端APP,使用vue组件化开发。

APP支持IOS/安卓,同时也支持在微信中使用,可替换素材DIY自己的APP。

万能的提数

以前我们经常讲到,ES提数公式最稳定,而应尽量避免使用回写公式。

聚表中的提数公式可以直接写sql,这就赋予了他更多更强的能力。

栗子1:提取最新单价+日期

在ES中,如果我们要提取某个物料的最新采购单价,一般要用两条提数公式,一条提取最新单价的日期,再一条根据这个日期去匹配提取单价信息。

使用聚表,我们可以手工修改提数公式的sql,加入not exists子查询进行筛选

从而实现一步到位提取最新单价及日期。

栗子2:提取未完成的采购订单数

一般的,采购订单可能会有多次送货,例如:订单共下了10个,第一次送1个,第二次送2个……

那么,用户第一次填报时应该自动显示计划待收10个,第二次显示9个,第三次显示7个……

在ES中,这个功能通常做成视图,然后再做成列表选择或提数。

使用聚表,我们可以一步到位提数实现,手工加入left join子查询,用订单数-已收数得到待收数

从而实现第一次填时自动待收10

第二次待收9

栗子3:无级BOM即时展开

这是MRP的核心预算功能,特别是成本预算中,我们要临时组合组件来预算产品成本,组件本身又可不断展开为下级组件,层级数不确定。

在以往我们用ES开发时,只有两种选择:

  • 一种是把数据先保存到数据库,然后依靠sql视图的CTE递归展开,这个视图运算量非常大,随着BOM的增加呈几何数量上升,性能差而且预算不即时,因为需要先提交保存,再打开查看结果。

  • 另一种办法是用vba把本表数据提交到数据库,调用存储过程进行计算,结果存入临时表,再从临时表提数到客户端进行显示。这种办法性能很好,但是维护困难,会有一堆又臭又长的vba以及sql代码要撸。

使用聚表提数,多快好省的解决了这个问题,同样的,手工编辑sql,将本表明细传给cte递归的第一个部分,union all后的第二个部分用现有BOM表递归展开。

实际效果,第一次选择前置四驱,自动展开:

第二次选择双电机四驱,自动展开:

除此以外,提数sql还能写入update或insert,可以像ESAP的数据库API一样任你玩耍哦~

灵活的映射

很多时候我们需要使用映射表来避免使用回写公式,聚表的映射表比ES更灵活。

例如:财务有一个的【凭证模板】,通常我们希望一些单据在保存时可以自动生成这个凭证。

为了实现出库单自动凭证,可以在【出库单】建立sheet2,命名为pz,相关字段可以写死,即用=号链接到sheet1

然后定义两个明细表分别映射到凭证主表凭证明细表,为了能在【凭证】模板也显示,必须建立一个字段映射到Createtime字段。

这样,当我们保存【出库单】后,就可以看到【凭证】中也有了单据。

比ES更灵活的是,在凭证中删除该凭证后,出库单不会影响,而重存出库单可以再次生成凭证。

神器:报表命令

JU提供的报表命令,取代了vba,轻松实现更多更好方案。

例如,报表命令的事件可以调用表间公式,而表间公式可以直接写sql使用本表字段作为变量,这就提供了无限的想象。

举个栗子

通过报表命令+提数轻松实现ES很难实现的BOM逐行双击展开演示

  • 选择一个BOM,系统自动显示一级组件,可继续展开的组件前面会显示+

  • 双击前置四驱,展开

  • 双击振金,展开

  • 实现方法截图,无需vba,仅仅设置一下即可

随心所欲的回写

JU的回写也能直接写SQL,这看起来可以干一票大的^_^,一些在ES中难以想象的事情。

举个大栗子

通过映射+回写实现数据快速导入(新建表单)

通常在ES中,我们要批量新建表单就必须用回写中的新建表单公式,一般的做法是开发一个模板,填数或提数,然后通过保存时-回写新建表单来创建这些表单,实际上我们是把数据存入A表,然后再新建B表,一份数据保存了两次。

在JU中,我们可以把A模板的明细直接映射到B表,不需要回写新建表单,数据保存一次即可,速度快N倍啊有木有。

  • 村长在从ES迁移往来单位到JU时就用了这招,先建立往来单位模板,此时空空如也。

  • 建立导入模板,明细字段一一映射到往来单位表,增加两个特殊列,createtime和recordid,设置好自动生成公式。

  • 黄色主表字段(rcid)的100是当前系统RecordId的最大编号,从系统表JU_Seed表直接提数拿到。主表字段(rcid2)的103这个数是完成导入后要回写到JU_seed表的新最大编号

  • duang~!,主角登场,回写修改公式直接写sql来update系统表JU_seed,在ES中这一步困难重重。

  • 测试填报的实际效果。

  • 保存后,近4000条客户信息就完成了创建,导入表单本身删除无任何影响,超级移花接木的既视感!

小结

  • 使用聚表,我们可以告别UD表和vba,也能少写很多视图

  • 本文涉及的部分案例已打包成【六一库(180611)】←点击下载,欢迎下载玩耍。

  • 最后,祝童鞋们六一快乐,恭喜聚表六一版(2.6.1)发布。

本文将不定期解锁更多的好玩的姿势。


近似文章