场景
员工在“请假单”中提交自己的请假信息,然后在“考勤汇总”中自动按指定的考勤周期(以每月21日~次月20日为一个周期),统计出每个周期的请假情况
准备示例表格
首先创建2个表格
“请假单”的字段配置及示例数据:
“考勤汇总”的字段配置及示例数据:每人每月会有一条汇总记录
创建工作流
先说一下该工作流的创建思路:
当员工“创建、修改、删除”请假记录后,都需要更新汇总记录。
更新时,可以知道当前是谁在请假,所以就在“请假单”表中,统计请假人=当前请假人,且请假时间在考勤周期内的数据,就能知道某人本周期请了多少假了。
因为要区分不同的请假类型,所以统计时,还要分别统计“事假”和“年假”的请假天数,然后更新到汇总记录中。
下面我们在“请假单”中创建工作流。
第一步:触发动作
选“创建、修改、删除”,然后下一步。
第二步:触发条件
这里不需要判断条件,因为只要写入了请假记录,就需要更新汇总记录。
当然,如果涉及审批的场景,需要审核通过后才计入汇总结果,那么就需要在这里进行判断了。
第三步:触发动作
因为需要自动生成每月的汇总结果,所以我们选择“修改已有数据,如找不到已有数据,则创建新数据”。
目标表格,我们选择“考勤汇总”表格。
修改哪些数据,我们选择“指定条件下的数据”。
条件表达式为:
AND({目标表格.员工}={当前数据.请假人}, {目标表格.考勤周期开始}<={当前数据.请假日期}, {目标表格.考勤周期结束}>={当前数据.请假日期})
这里解释下表达式的意义:
每个员工都会在一个考勤周期内添加多条请假记录,但这些记录需要统计到一条考勤汇总记录中。这个公式就是在更新汇总记录时,去找到当前请假人,在指定考勤周期内的唯一一条汇总记录用的。
继续配置当有了考勤汇总记录后,我们如何更新数据:
这里我们添加要汇总两种请假方式,如果您有多个请假类型,可以自行在“考勤汇总”表中扩充。
我们先看“事假”的赋值表达式:
SUM({当前表格.请假天数}, AND({当前表格.请假类型}=[{C:请假单.请假类型.事假}], {当前表格.请假人}={当前数据.请假人}, {当前表格.请假日期}>=IF(DAY({当前数据.请假日期})>20, DATEFORMAT({当前数据.请假日期}, 'YYYY-MM-21'), DATEFORMAT(DATEADD({当前数据.请假日期}, -1, 'M'), 'YYYY-MM-21')), {当前表格.请假日期}<=IF(DAY({当前数据.请假日期})<21, DATEFORMAT({当前数据.请假日期}, 'YYYY-MM-20'), DATEFORMAT(DATEADD({当前数据.请假日期}, 1, 'M'), 'YYYY-MM-20'))))
这里解释下表达式的意义:
对于“事假”,我们要汇总当前请假人在请假时间所在的考勤周期内的请假天数,
1) 所以我们用了 SUM() 函数,对“请假单”表格的“请假天数”做统计。
2) 在统计函数的条件部分,我们用了 AND() 函数,用于组合多个统计条件,做“且”的判断。
3) 条件部分,{当前表格.请假类型}=[{C:请假单.请假类型.事假}] 用来只统计“请假类型”为“事假”的记录。这里注意,分类字段与备选项比较,备选项需要用方括号“[]”括起来,填写备选项需要输入“{c:}”后,选择表格、分类字段、备选项,才行。
4) {当前表格.请假人}={当前数据.请假人} 用来只统计当前用户的请假记录。
5) 剩下的条件,就是用来判断,只统计请假时间所在考勤周期内的请假天数。这里有个小的算法:用 DAY() 函数获取“请假时间”的“日”,如果“日”大于20日,则考勤周期的开始时间为本月的21日,否则为上一个月的21日。本月的20日可通过 DATEFORMAT() 函数对“请假日期”做格式化的输出,格式为“YYYY-MM-21”,这个格式表示将日期中的年(YYYY)、月(MM)拼接成指定的格式,这样就获得了本月21日。上一个月的21日,则先要将“请假时间”减去1个月,这里用到 DATEADD() 函数,第2个参数表示对日期加减的数量,上一月我们就“-1”,第3个参数表示加减的单位,按月加减我就写“'M'”,注意单位要用单引号引起来,然后再套用 DATEFORMAT() 函数,就获得了上一月的21日。最后用 IF() 函数将条件、本月的21日、上一月的21日连起来,就获得了准确的考勤开始时间了。考勤周期的结束时间也是类似的做法,不再赘述。
后面我们处理下,当汇总表中,还没有数据时,应该如何创建一条汇总数据:
新数据中的“员工”自然填入“请假人”,考勤开始时间、结束时间,跟上面的讲述的取法一样,这样就有了“请假时间”所在的当期考勤周期的汇总记录了。
初次的事假、年假的天数,可以通过判断当前数据的请假类型,分别赋值即可。
到此,这个工作流就创建好了。快去在“请假单”中添加几条请假记录,然后再去“考勤汇总”表格中看看结果吧~
|