取数公式概述
取数公式是为了正确的将数据库中的数据提取到当前的表单中,要顺利的完成取数操作,整个实现过程可分为四步,分别是:选择数据源
->设置筛选条件
->明确数据填充
->确定执行时机
。
取数公式的设置,其实就是将SQL语法进行了封装,它等同于数据库的功能。在使用Workfine时,即使我们不懂数据库,只要掌握了这套逻辑,也能够完成很多数字化的处理工作。
下面,我们用一个简单的例子给大家介绍一下取数公式的基本操作。
在采购管理中,我们需要先下采购订单,然后再进行采购入库,为了保证入库时能够对应到相应的采购订单,需要在入库单上选取相应的取数公式
提取采购订单数据。如下是取数公式的基本介绍,也是案例的实现过程
取数公式入门级演示_视频讲解
通过上述介绍我们了解到了取数公式的基本操作。在取数公式操作的4个步骤中,每一步都会有一些重要的知识点。在本章后面的学习中,我们将对每一步进行拆分讲解,同时通过一些案例引证,让大家快速的掌握取数公式的应用。
取数公式分步详解▼
一、选择数据源
选取数据源是我们使用取数公式的第一步操作。在前面的讲解中,为了便于理解,主要都是选取单个数据表作为数据来源。
数据来源的知识点,将在视图章节详细讲解 【查看为什么】
本节,我们只需要对数据表关联有一定的理解即可。 还是先用一个例子,让我们更好的理解数据表关联。在采购管理中,采购部门在向供应商下采购订单后,供应商就会根据订单内容进行送货,因为下单与送货的时间不同,现在采购部门想了解有
要实现上面的要求,我们要先理解业务关系。业务从采购订单流转到入库,采购订单上有所有的采购信息,入库单上有所有的入库信息。在进行入库操作时,我们需要清楚每一笔入库是跟哪一笔订购单对应。
下表:订单与入库关联得到未入库的信息
采购订单
将入库单号=
在这里,我们需要掌握一个数据库知识点。
当两表关联时,如果入库单中有对应订单号,则两边订单号相等表示实现关联。如果入库单中没有对应订单号,那么该如何表示没有关联上呢?在数据库中,未实现关联,使用null来表示,比如:字段A=null 或者 字段A is null。
这里也给我们在遇到问题时,提供了一个排查原因的思路。当我们有数据表关联时,如果数据参与运算没有得到我们预期的结果,而数据本身又没有发现问题,那可能是因为数据表关联产生了null值,而影响了我们的运算导致的。
下面是采购订单到入库后,如何查询待入库的订单的案例演示。
数据源视频说明:
二、筛选条件
我们可以将数据源选取过来的数据视为”脏”数据,进行筛选后的数据为”干净”数据。比如上一小结中,我们的数据源是所有采购订单和采购入库单的信息,但是我们只需要未入库的那部分信息,因此,我们就需要对数据进行一定程度的筛选。 数据筛选,是在一个数据筛选框中完成的。
筛选框总共分为六部分构成(见下图)
下面给大家做个详细介绍。
1.来源数据表
选择数据源后,所有的数据表和字段将在1区域中展示,它代表的就是所有的源数据。
2.本表
本表指用户操作的表单数据,很多时候是需要将来源表数据与本表数据进行比对,来进行数据筛选。
3.逻辑运算符
逻辑运算符是我们筛选数据,进行逻辑编辑时所需要的连接符或者判断符。比如来源表单号=本表单号
,等于号就是其中的判断符;来源单号=本表单号
,等于号是其中的判断符,并且是其中的连接符。 整个筛选条件的编写,其实是通过逻辑运算符将字段连接起来,形成完整的逻辑关系。逻辑运算符所表达的含义,以及如何编写表达式来体现我们想要表达的逻辑是至关重要的,这在一定程度上是对我们逻辑能力的锻炼。
各逻辑运算符的含义▼
学习逻辑表达式中基本的书写规范,让我们熟悉如何通过符号来表达基本的逻辑关系。就像我们读书时学习的1+1=2是一个数学公式,我们要通过逻辑表达式来反映我们所需要的数据。
表达式示例
字段A=字段A
,表示要从来源数据中取出与当前表单字段A值相同的数据字段A=
‘''
,表示要从源数据中取出字段A值为空的所有数据字段A=字段A
表示要从来源数据中取出与当前表单字段A值和字段B值都相同的数据并且 来源表.字段B=本表.字段B
我们就是通过书写表达式的方式,来表达我们需要的逻辑。 我们先来看下逻辑表达式中的逻辑运算符,它分为
算术运算符:
包括加减乘除( + – * / ),用法与我们数学课本中使用的方式类似,只是从一个具体数字变成了一个字段,1+1 换成了 表.字段1+表.字段2 ,如果是除法,同样要考虑分母为0的情况。
关系运算符:
等于,不等于,大于等于,小于等于,也是与我们平常的使用方法一样,如果要表达两个字段相等就用 表.字段1=表.字段2 来表示;要表达某个字段为固定值,就用 表.字段1=’某值’ 表示。我们将一个关系运算符连接的表达式,叫做一个关系,一个关系就是一个最小的逻辑表达式。
「空值表示方法 」
- 文本型字段:
字段=''
- 数值型字段:
字段=0
- NULL值:
字段=null
或者字段 is null
关系连接符:并且&或者
关系1
表示关系1 和关系2的条件要同时满足。关系1
表示关系1和关系2的条件只需要满足其中一个即可。
▶ 查看详细说明
上面我们说过,一个关系运算符连接的表达式,就叫做一个关系,关系与关系之间是通过关系连接符进行连接的,比如 来源表.字段1=本表.字段1
,是要求来源表的字段1和字段2要与本表的字段1和字段2同时相等;来源表.字段1=本表.字段1
,是要求来源表的字段1和字段2要与本表的字段1和字段2只要满足其中一个相等即可。【并且】和【或者】就是我们的关系连接符,
优先判断符:先加减后乘除,先括号内后括号外
▶ 查看详情
我们先来看下我们小学时的一个运算公式: 2×3+4=10和2x(3+4)=14。我们发现,当在第二个公式中添加了括号后,所得到的运算结果就不一样了,原因是括号将运算的顺序调整了。同样的,当我们写出表达式
来源表.字段1=本表.字段1 或者 本表.字段1=’ ‘ 并且 来源表.字段2=本表.字段2
和
来源表.字段1=本表.字段1 或者 (本表.字段1=’ ‘ 并且 来源表.字段2=本表.字段2)
这两个表达式所表示的逻辑含义也不一样,使用括号会先将括号中的几个关系当做一个大的”关系”先判断,然后再与其它的关系一同判断。
4.系统字段 @最后修改时间
系统字段
与我们在数据规范中学习的系统变量
有类似之处
▶ 展开查看
系统字段
与我们在数据规范中学习的系统变量
有类似之处,都是系统提供给我们的一些信息,我们需要了解每个字段的含义以及常见的应用场景,这样才能在我们需要的时候进行灵活的调用。
5.高级表达式(函数)
在Workfine设计器中提供了丰富的函数功能,能够帮助我们在进行逻辑判断或者聚合运算时,更加便捷的得到我们想要的结果。高级表达式是表达式功能的一部分,它提供了各种功能方便我们完成各种逻辑表达。
高级表达式总共分为统计函数,字符串函数,数学函数,类型转换函数,日期函数,系统变量,系统常量七大部分,每部分对应一些函数。
其中统计函数也叫聚合函数,包括合计、计数、最大值、最小值等,
字符串函数应用的比较多的是取拼音码函数
,他在我们的数据规范、列表设置中使用的非常频繁,希望大家一定要掌握;
日期函数是我们使用非常频繁的部分,我们需要熟练掌握日期函数中每个函数的应用方法和应用场景,下面,是我们常用函数的列表和使用方法。
常用函数列表和说明:
▶ 展开查看
类别 | 常用函数名 | 含义 |
统计函数 | 合计([数字型字段名]) | 函数返回数值型字段的合计值 |
平均([数字型字段名]) | 函数返回数值型字段的平均值 | |
计数([字段名]) | 函数返回字段的个数 | |
计数排除重复([字段名]) | 函数返回字段不重复的个数 | |
最大值([字段名]) | 函数返回字段的最大值 | |
最小值([字段名]) | 函数返回字段的最小值 | |
字符串函数 | 取子串([字符串],[起始位置],[截取长度]) | 取一个字符串的子串,从起始位置开始 |
字符串长度([字符串]) | 获取一个字符串的长度 | |
转大写([字符串]) | 将字符串转化为大写形式 | |
转小写([字符串]) | 将字符串转化为小写形式 | |
去左边空格([字符串]) | 去除字符串左边的所有空格 | |
去右边空格([字符串]) | 去除字符串右边的所有空格 | |
取文本左边([字符串],[长度]) | 返回字符串中最左侧指定数目的字符 | |
取文本右边([字符串],[长度]) | 返回字符串中最右侧指定数目的字符 | |
查找字符([条件],[字符串],[起始位置(可忽略参数)]) | 返回字符串中指定字符的开始位置 | |
替换字符串([字符串],[被替换字符串],[替换为字符串]) | 替换字符串中被替换的内容 | |
重复字符串([字符串],[重复次数]) | 返回字符串重复指定次数的结果 | |
拼音码([字符串]) | 获取指定字符串拼音码 | |
数学函数 | 略 | |
类型转换函数 | 数值转字符([数值] AS VARCHAR) | 将数值类型转换成字符类型 |
日期转字符(VARCHAR,[日期],[格式]) | 将日期类型转换成字符类型 | |
字符转日期型(datetime,[字符串],[格式]) | 将字符类型转换成日期类型 | |
空值转替换值([字符串],[替换字符串]) | 将字段中为NULL的记录替换为指定任何类型的值 | |
日期时间函数 | 年份([日期]) | 函数返回指定日期的年份值。#年份() 值为数值类型 |
月份([日期]) | 函数返回指定日期的月份值。 | |
日期([日期]) | 函数返回指定日期的日值。 | |
(季度值([日期])-1)/3+1 | 函数返回指定日期的季度值。 | |
星期值(weekday,[日期]) | 函数返回指定日期的星期值。 | |
日期加减(unit,1,[日期]) | 函数返回一个日期加上一段时间偏移量的结果。 | |
日期间隔(unit,[开始日期],[结束日期]) | 函数返回两个日期的差值,以给定的unit作为基本时间计算单位。 | |
月天数([日期]) | 函数返回日期中月份的总天数 | |
星期一([日期]) | 函数返回日期所在星期的星期一 | |
年月日([日期]) | 函数返回日期的年月日字符串 如:20120501 | |
年月([日期]) | 函数返回日期的年和月组合字符串 例如:201205 | |
月初([日期]) | 函数返回本月第一天 | |
月末([日期]) | 函数返回本月最后一天 | |
年初([日期]) | 函数返回本年第一天 | |
年末([日期]) | 函数返回本年最后一天 | |
季初([日期]) | 函数返回日期所在季度起始日期 | |
季末([日期]) | 函数返回日期所在季度结束日期 | |
系统变量 | 系统变量.当前用户ID | 当前用户ID |
系统变量.当前用户姓名 | 当前用户姓名 | |
系统变量.当前用户登录名 | 当前用户登录名 | |
系统变量.当前用户角色 | 当前用户角色 | |
系统变量.当前用户所在部门 | 当前用户所在部门 | |
系统变量.当前用户部门编号 | 当前用户部门编号 | |
系统变量.当前用户部门全称 | 当前用户部门全称 | |
系统变量.当前用户兼职部门 | 当前用户兼职部门 | |
系统变量.当前用户所在单位 | 当前用户所在单位 | |
系统变量.当前用户单位编号 | 当前用户单位编号 | |
系统变量.当前日期 | 当前日期 | |
系统变量.当前日期时间 | 当前日期时间 | |
系统变量.当前用户登陆IP | 当前用户登陆IP | |
系统常量 | 系统常量.锁定标识_未锁定 | 表单未锁定状态常量 |
系统常量.锁定标识_已锁定 | 表单已锁定状态常量 | |
系统常量.表单状态_未审核 | 表单未审核状态常量 | |
系统常量.表单状态_已审核 | 表单已审核状态常量 | |
系统常量.表单状态_已作废 | 表单已作废状态常量 |
日期时间函数:
▶ 展开查看
日期时间函数视频讲解
日期加减函数:日期加减(unit,n,[日期])
▶ 展开查看
日期加减函数视频讲解
日期转字符函数:日期转字符(VARCHAR,日期,格式)
在Workfine中,使用日期转字符函数,可以将日期字段可以转成文本字段。
语法
日期转字符(VARCHAR,日期,格式)
VARCHAR:替换为需要进行转换的日期字段
格式:替换为日期显示格式对应的Style ID ,具体数值参见下表。
如:日期转字符(字段,日期,101)
日期间隔函数的使用介绍
日期间隔函数 | |
---|---|
结构: | 日期间隔 (datepart , [开始日期] , [结束日期] ) |
功能: | [结束日期] – [开始日期],根据datepart指令,得出两个日期的间隔值 |
Datepart: | yy年、qq季度、mm月、wk周、dd日、hh时、mi分、ss秒 |
例如: | 日期间隔 (yy,2022年8月1日,2022年9月1日)=0 日期间隔 (mm,2022年8月1日,2022年8月8日)=0 日期间隔 (dd,2022年8月1日,2022年8月1日)=0 |
应用范围: | 日期间隔相等判断: 日期间隔(datepart,来源表.日期字段,本表.日期字段)=0 日期间隔范围判断: 在查询表中提前设置日期范围:开始日期,结束日期 日期间隔(datepart,来源表.日期字段,本表.开始日期字段)<=0 日期间隔(datepart,来源表.日期字段,本表.结束日期字段)>=0 |
时间间隔函数视频讲解.mp4
6.逻辑编辑框
逻辑编辑框是实现我们逻辑编写的区域,通过1、2、3、4、5提供的内容供我们在逻辑框中编写各种逻辑表达式,我们需要应对不同的数字化问题编写不同的逻辑表达式,但在这个过程中是有一定的规则可依的。
下面,我们将会提供大家两种逻辑表达式的编辑范式,通过这个范式来完成绝大多数情况下的数据筛选。
图:逻辑表达范式
书写范式(规则方法)
我们在书写逻辑表达式的时候,是一个个关系通过关系连接符和优先判断符连接起来,实现我们想表达的逻辑。我们可以编写出 关系1 并且 关系2 或者 关系3 的逻辑表达式,也可以编写出 关系1 并且 (关系2 或者 关系3)的表达式。 每个关系中又是一个完整的判断公式 比如关系1的判断公式是 来源表.字段1=本表.字段1;关系2的判断公式是 来源表.字段1<>本表.字段1等等,这与我们学习的数学公式是类似的。 通过编写逻辑表达式,我们可以表述出很多逻辑关系,但在实际的应用场景中,
精确查询 | 写法示例 |
---|---|
单表字段 | 来源表.字段=本表.字段 |
多表字段 | (来源表.字段A=本表.字段A |
模糊查询 | 正确写法 |
---|---|
单表字段 | 来源表.字段=本表.字段 |
多表字段 | (来源表.字段A=本表.字段A |
精确查询范式
上面我们介绍了逻辑表达式的基本书写规范,需要我们就如何书写逻辑表达式有一个基本的概念,本节和下节我们将学习两个基本的筛选范式,以便让我们能够快速掌握表达式的应用。 第一个逻辑表达式范式叫做精确查询,他是在表单上输入条件后,要求输入的条件都满足,从而得到精确的结果,如果不输入条件将查询不出内容。比如我们在采购入库单上,要输入具体的采购订单号,才能将采购订单的内容查询到采购入库单上。
精确查询的范式就是关系与关系之间用并且连接,并且要求本表的字段内容不为空。精确查询标准的书写范式是 (来源表.字段A=本表.字段A 并且 本表.字段A<>' ') 并且 (来源表.字段B=本表.字段B 并且 本表.字段B<>' ') ……
该书写范式中,所有的关系都是通过并且连接,括弧括起来的逻辑单元表示当前表的字段内容要与来源表的字段内容匹配,并且当前表的字段内容不为空,这样表述就会更加严谨。
我们先来看下精确查询的介绍视频,小伙伴在看视频的同时,也要跟着一起练习,这样才能对每一个操作细节有更加深刻的了解
精确查询视频讲解
模糊查询范式
模糊查询范式是指在查询的时候,查询的条件越多,满足条件的数据越少;查询的条件越少,满足条件的数据越多。比如在报表查询中,会设置一些查询字段,然后设置取数公式根据查询字段取出查询结果,当不输入查询条件时,就得到所有数据;当输入一个查询条件时,就得到与该查询条件匹配的数据;当输入多个查询条件时,就得到与多个查询条件匹配的数据。
图:根据查询条件提取查询结果
模糊查询的范式主要用于查询模板中进行数据查询,我们在查询模板中利用这样的范式基本上能够满足所有的查询要求,查询模板的编写范式为 (来源表.字段A=本表.字段A 或者 本表.字段A=' ') 并且 (来源表.字段B=本表.字段B 或者 本表.字段B=' ') ……
我们以一个括号中所表达的关系为例来解释表达式的意思: (来源表.字段A=本表.字段A 或者 本表.字段A=’ ‘)表达式要求 来源表字段与本表字段相等,或者本表字段为空 这个时候,当在本表字段中输入内容时,就满足前面一段逻辑,得到了精确的结果,当本表字段中不输入任何内容时,就满足了后面一段的逻辑,得到了所有的结果,而两个关系又用或者连接,满足其一即可,所以就实现了输入内容查询出对应的结果,不输入内容就得到了所有结果的目的。
下面,我们通过视频来给大家介绍模糊查询的应用,请大家一定要仔细观看并熟练掌握。
模糊查询视频讲解
形如的判断
形如是一种模糊匹配的表达式,
什么是形如?【查看详情】
在不同的场景中,我们做出的逻辑判断并不一定是等于关系,有些场景中,我们也会用到形如或者不等于的关系。 在形如的应用中,两个字段内容一个是长字段内容,另一个是短字段内容,
模糊匹配形如用法
形如模糊匹配视频讲解
日期判断
在我们逻辑表达式的书写中,如果是对日期型字段做判断,就要重点注意。【查看为什么】
我们
这个时候我们就需要用到日期函数了,在日期函数中,不仅要设置两个日期参数,还需要设置日期是以年、月、日还是时、分、秒来做比较。
—
小结
筛选条件属于表达式中比较重要的功能点,知识涵盖面也比较广泛,需要我们认真消化和吸收,从逻辑标识符,到逻辑编写范式,再到一些函数的使用都需要我们认真的研究和总结。学过这个章节之后,就相当于我们翻过了数字化开发平台使用的大山,在后面不停建设和应用的过程中,我们将更加清楚系统开发的本质。
三、字段填充
本节,我们来讲解取数公式的填充。相较于筛选条件,字段填充的内容理解起来会更加的轻松。我们只需要了解填充的几种应用场景,然后根据需要进行套用即可。 字段填充是指,当我们筛选出需要的数据后,源数据是一条条信息,每条信息包含多个字段,我们需要将每个字段的内容依次填入当前表的字段中。在填充时,还有可能再对源数据做一些加工处理,最终得到我们想要的数据。
图:筛选后进行数据填充
填充时需要注意,填充的源字段与当前的本表字段类型要一一对应,文本型不要填入数值型,数值型不要填入日期型等。填充时的业务场景主要分为3种,包括明细填充,聚合填充,条件填充。其中聚合填充和条件填充是我们需要重点掌握的,明细填充引入进来是能够让我们快速的对填充有个概念。 这里给大家介绍一个设计的小技巧,填充时,我们要善于利用批量填充的设置,能提高我们的开发效率。
图:批量填充设置位置
1.明细填充
以采购订单查询为例,我们在产生很多采购订单数据后,需要对采购订单的数据进行查询,这个时候,可以设计一个采购订单查询模板,通过取数公式,将采购订单的数据提取到采购订单查询表中。 这个时候,我们可以根据需求设置好查询模板的样式,在查询模板中,主表可以设置不同的筛选条件,子表是我们想查询出的数据展示,然后利用取数公式选取采购订单为数据来源,筛选条件可参照上一节的模糊查询范式进行编写,最后将数据提取到查询表中,这就是整个的取数过程。 下面我们通过视频介绍,来看下明细填充的实现过程。
图:明细填充
明细数据填充视频讲解
2.聚合填充
聚合填充是指,提取源数据时,需要对源数据进行聚合运算后再展示,比如对采购金额做合计,对采购订单做计数,对采购价格取最小值等,都是一种聚合运算。聚合填充的使用也很简单,只需要在填充时,对要聚合的字段使用一个聚合函数即可,比如要对采购金额做合计,只需要用:合计(采购金额) ,表示即可。 聚合填充时,需要注意两个知识点: 1、一个填充字段,只能使用一个聚合函数,比如在填充金额字段时,我们不能用合计(金额字段)+最大值(金额字段) 这样表示,如果确实需要多个聚合函数运算后得出结果,可以通过我们数据集成中的视图功能处理后,再进行填充。 2、聚合填充时,我们要正确选择非聚合的填充字段。比如,我们要对供应商的采购金额做合计,在填充时,我们除了要填充合计金额字段外,还要填充其它相关字段。如果我们还填充日期的年月和供应商字段,那么每行的数据是表示每个月,每个供应商的采购总额;如果我们填充了日期的年月,供应商名称还有产品名称,那么每行的数据是表示每个月,每个供应商,每件商品的采购总额。因此非聚合字段填充的不同,对应每行数据所表示的意义也不同。 下面,我们还是通过采购订单查询表,来学习一下聚合填充的视频教程
图:聚合填充
聚合函数视频讲解
3.条件填充
条件填充是指,在填充时,我们可以根据不同的条件填充不同的值。比如我们在查询库存状态时,当产品数量大于30小于100时,我们想显示库存正常;当小于30时,我们想显示库存紧张;当数据大于100时,我们想显示库存积压,这个时候我们就需要根据不同的情况填充不同的内容。 学习条件填充,实际是学习case when 函数的使用,它与我们excel中if函数的使用类似,中文翻译过来就是当情况1发生时,我们填充状态1;当情况2发生时,我们填充状态2;当情况3发生时,我们填充状态3……(以此类推),否则,我们填充状态N;结束。 (case when 条件1 then 结果1 when 条件2 then 结果2 when条件3 then 结果3 ……else 结果N end )
条件填充的使用也需要注意两点:
1、case when 函数中,整个语法 case when 条件 then 结果 end ,是最小的语法单元,开头case when * then * 是必须要的,中间 when * then * 可根据条件判断需要进行添加,else then * 是否则的判断,可以根据需要选择添加或者不添加;最后一句end 是与开头的case when 呼应的,必须要添加;
2、当遇到聚合函数与条件填充组合使用时,需要将聚合函数写在外面,并且同一个字段只能填充一个聚合函数,比如在合计时要做条件填充,正确的写法是: 合计( case when 条件1 then 结果1 when 条件2 then 结果2 …… else 结果N End )
错误的写法 case when 条件1 then 合计(结果1 ) when 条件2 then 合计(结果2) ……else 合计(结果N) End
以下,是条件填充的视频介绍,请大家仔细学习并练习
图:条件填充
条件填充CASEWEN视频讲解
我们通过前面的学习基本上能够对取数公式的使用有了一定的掌握,从取数,筛选到填充,让我们对整个数据治理有了一定的理解,同时,也为我们数字化思维的转变夯实了基础。 在今后的学习中,我们只需要将所学习的知识牢固掌握,通过不同的应用场景能够融会贯通。很快,我们就能拥有建设数字化系统的能力。
四:执行时机
执行时机是指,我们在完成取数的逻辑后,要确定这个取数逻辑是在什么情况下执行。我们在应用端填写表单时,会有很多操作时机:从打开表单开始,在表单上填写数据,然后保存,后面又会有修改,删除等情况。这些都是对表单的操作,我们把对表单的各个操作过程分成了不同的节点,不同操作节点对应不同的公式执行时机。满足时机时,我们才会触发公式。执行时机就如同我们发射火箭时的口令,只有听到口令后,才会有发射的动作,同样的,只有公式满足执行时机后,才会触发执行。 我们根据操作表单的不同状态,将公式的执行时机分为7种时机。分别是新建时,修改时,查看时,保存时,自动,手动和应用于工作流。其中新建时执行是新增表单时执行,保存时执行是点击保存按钮时执行,自动执行是,表上的某个字段内容发生变化时执行;手动执行是指点击按钮执行。以下,是各个公式执行时机的具体说明
1.公式的执行时机和说明
执行时机 | 说明 |
---|---|
新建时执行 | 【新增表单】时执行公式 |
手动执行 | 不具体指明触发时机,需要用户手动点击【按钮】触发公式执行这个按钮是系统默认的查询按钮,也可以在【按钮/事件】中绑定新按钮 |
自动执行 | 在当前表中,当参与筛选条件的字段内容发生变化时,触发公式执行注意:通过Excel公式导致筛选条件的字段值发生变化时,不会触发公式执行 |
查看时执行 | 历史记录中,点击【查看按钮】时执行公式 |
修改时执行 | 历史记录中,点击【编辑按钮】时执行公式 |
保存时执行 | 在【保存表单】时执行公式 |
应用于流程 | 将公式指定在工作流的某一个节点上执行同时还需要勾选其他执行时机:如新建、自动执行等 |
需要注意的是,公式的执行时机是可以多选的。是因为同一个取数,可能在多个时机点都需要,我们需要根据不同的业务场景选择合适的时机。比如我们在出库单上一个库存查询的取数公式,因为库存会随着出入库的变化而变化,我们在编辑的时候要保证库存查询的及时性,要选择自动执行;在保存时,防止同时有其他同事操作,造成库存变化,还要选择保存时执行;在查看和修改时可能随着时间影响,库存发生了变化,还要选择修改和查看时执行。因此,在一个库存取数公式中,我们设置了4个查询时机。 但是公式执行的时机并不是越多越好,设置多了不仅会影响操作效率,同时可能会影响数据的交互逻辑。因为多个公式执行时,可能需要满足一定的执行顺序,设置错误的执行时机会造成执行顺序的紊乱,也有可能得出错误的结果。 以下,是关于执行时机的介绍视频,请各位小伙伴们认证观看
取数公式-执行时机视频讲解
2.执行条件
我们刚刚讲解了执行时机,是在操作表单的某个节点时,执行公式。这一节,我们讲解执行条件,执行条件是指在执行时机下,只有满足了执行条件,公式才会执行。执行条件仅应用在自动执行的执行时机下,它与执行时机是两个完全不同的概念。 执行条件是什么意思呢? 我们在执行时机中讲过,在自动执行的时机下,当参与筛选条件的字段内容发生变化时,公式就会触发执行。这种情况下,当筛选条件有多个本表字段时,只要参与筛选条件的本表字段内容发生变化就会触发公式执行。这样,就会造成公式的频繁执行,不仅浪费效率,也会影响体验。某些情况下,我们可能需要参与筛选条件的几个字段都有值后,才触发公式。这个时候,我们就可以设置执行条件,要求参与筛选条件的某几个字段同时不为空时,再触发公式,这样触发时机就会更加的精准。
取数公式-执行条件视频讲解
3.清除方式
很多初学的小伙伴在学习取数公式时,很难理解为什么要有清除方式这样的功能项,我们还是通过一个例子来理解一下:在采购订单查询表中,我们利用取数公式来查询订单信息。如果不进行先清除之前内容,当我们第一次通过筛选条件查询出订单信息后,再更换查询条件再次查询,我们会发现之前查询的订单信息还在;后查询的订单内容会显示在之前查询数据的下面,显然是不合理的。
图:清除方式为不清除时的情景说明
因此,清除方式的一个目的是为了在公式多次被触发后,对填充字段内容的清除处理。如果我们用取数公式提取扩展表数据,公式第一次按条件取出了结果;然后我们再修改查询条件,第二次提取数据,那么第一次的取数结果应该先清除掉,否则的话,就会与第二次的结果混淆在一起,得不到我们想要的结果了。 以下,是我们对清除方式的具体视频介绍,请各位小伙伴们仔细学习
取数公式-清除方式和清除时机视频讲解
表达式功能是Workfine设计最重要的功能点,而取数公式就是表达式功能最典型的代表。我们能将取数公式的知识点吸收、消化,基本上就掌握了系统设计的核心思想。表达式功能实质是SQL语法的一种应用,而所有的企业管理软件都是基于这种关系型数据库的应用。因此,我们掌握了表达式功能,就能够掌握企业管理软件的设计。
相关文章
- 回写公式功能详解(更新)
- 含泪整理-提取公式的正确使用方式(经验之谈)
- 【回写公式】的正确使用方式(经验之谈)
- 视图的详细教程和示例-数据表关联
- 非形如用法详细教程及示例
- 实践:表达式内【属于】用法
- CHARINDEX模糊查找函数
- workfine平台的属于操作符应用方法(在SQL中IN)
#提取公式