概述
任何软件都会有这样那样的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:一个是字段叠加
,一个是字段切换
。
希望可以抛砖引玉,启发读者拓展思维,实现更多巧妙的应用。