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

ESAP第五弹 移花接木


概述

任何软件都会有这样那样的bug,ES也不另外。有些可爱的bug,就像早期EXCEL的格式刷bug一样,我们可以反过来利用它们为我们服务,实现一些很棒的功能。。

本文将针对ES的字段定义的小bug,实现一些可能抓破头也难以实现的需求。

案例演示

  • 许多朋友都希望ES表单保存时能够只保存一部分关键字段,而不保存辅助查询字段。例如下面的进仓单:我们希望填报时能看到库存还有多少,但保存时又不希望它们也被保存。

  • 如何做到呢?有些朋友会写一条提数公式,在保存前执行,清空库存数。这确实是不错的办法,但是,库存数这个字段在数据库中仍然是存在的,只是没有数据。

  • 那么库存数这个字段在数据库不存在可以吗?答案是肯定的

  • 首先,我们要在右侧扩展一下“库存”、“物料编号”和“批次”字段,将其定义为“明细表2”,(注意:原模板已定义主表和明细表1)

  • 在定义第4步选择“以后再创建”,即不创建数据库表。

  • 定义好后如下图:

  • 管理数据表中将“明细表2”的“批次”和“编号”字段区域改为明细表1的区域,保存。

  • 这样就完成了字段的叠加共用(这是移花接木精髓所在^_^,直接在已有字段上定义会报错)

  • 由于明细表2的部分字段叠加在明细表1上,所以使用数据规范和定义表间公式就会比较讲究。

  • 我们要在明细表2(确切的说,是上层的表)的编号上使用列表规范

  • 这样一旦用户选择了物料,由于字段叠加的关系,明细表1也能获得“编号”和“批号”数据,这样我们就可以用表间公式把其他信息如“描述”,“单位”等填入明细1。

  • 要注意的是:这个提数公式的筛选条件要设明细表2(确切的说,是上层的表),而填充匹配时时选择明细表1

  • OK,大功告成,赶紧填张单试试,新建,点击编号字段弹出列表

  • 选择几个物料确定后,自动填充如下图

  • 保存一下,明细表2并没有创建数据库表,所以数据不会保存,耶耶O(∩_∩)O~

拓展篇

  • 许多朋友对于提数公式中的填入公式非常不解,如果字段是数值型,我们试图用表间公式的填入公式去填充=_price*_amount这样的公式时,系统会报错。

  • 事实上把sum列字段改为文本型就可以使用“填入公式”了,保存定义好的表间公式后,再把文本型改为数值型,这样就能保存数值,并可参与其他运算。

村长补记

部分版本(例如v12.0.100+)封锁了这个良性的叠加bug,我们可以通过修改名称定义来实现叠加,具体做法是打开名称管理器,找到需要改的字段名称,修改区域后,再点管理数据表保存即可。

小结

本文介绍了两个关于ES的小bug:一个是字段叠加,一个是字段切换

希望可以抛砖引玉,启发读者拓展思维,实现更多巧妙的应用。


近似文章