8 评论

1 收藏

分享

【工作流案例】如何自动统计员工的请假记录

场景

员工在“请假单”中提交自己的请假信息,然后在“考勤汇总”中自动按指定的考勤周期(以每月21日~次月20日为一个周期),统计出每个周期的请假情况



准备示例表格



首先创建2个表格

1.png

“请假单”的字段配置及示例数据:

2.png

2.1.png

“考勤汇总”的字段配置及示例数据:每人每月会有一条汇总记录


3.png

3.1.png


创建工作流


先说一下该工作流的创建思路:

当员工“创建、修改、删除”请假记录后,都需要更新汇总记录。
更新时,可以知道当前是谁在请假,所以就在“请假单”表中,统计请假人=当前请假人,且请假时间在考勤周期内的数据,就能知道某人本周期请了多少假了。
因为要区分不同的请假类型,所以统计时,还要分别统计“事假”和“年假”的请假天数,然后更新到汇总记录中。

下面我们在“请假单”中创建工作流。

第一步:触发动作


选“创建、修改、删除”,然后下一步。

4.1.png

第二步:触发条件

这里不需要判断条件,因为只要写入了请假记录,就需要更新汇总记录。
当然,如果涉及审批的场景,需要审核通过后才计入汇总结果,那么就需要在这里进行判断了。

4.2.png

第三步:触发动作

因为需要自动生成每月的汇总结果,所以我们选择“修改已有数据,如找不到已有数据,则创建新数据”。
目标表格,我们选择“考勤汇总”表格。
修改哪些数据,我们选择“指定条件下的数据”。

条件表达式为
AND({目标表格.员工}={当前数据.请假人}, {目标表格.考勤周期开始}<={当前数据.请假日期}, {目标表格.考勤周期结束}>={当前数据.请假日期})

这里解释下表达式的意义:
每个员工都会在一个考勤周期内添加多条请假记录,但这些记录需要统计到一条考勤汇总记录中。这个公式就是在更新汇总记录时,去找到当前请假人,在指定考勤周期内的唯一一条汇总记录用的。
4.3.1.png

继续配置当有了考勤汇总记录后,我们如何更新数据:

4.3.2.png

这里我们添加要汇总两种请假方式,如果您有多个请假类型,可以自行在“考勤汇总”表中扩充。

我们先看“事假”的赋值表达式:
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日连起来,就获得了准确的考勤开始时间了。考勤周期的结束时间也是类似的做法,不再赘述。


后面我们处理下,当汇总表中,还没有数据时,应该如何创建一条汇总数据:

4.3.3.png

新数据中的“员工”自然填入“请假人”,考勤开始时间、结束时间,跟上面的讲述的取法一样,这样就有了“请假时间”所在的当期考勤周期的汇总记录了。
初次的事假、年假的天数,可以通过判断当前数据的请假类型,分别赋值即可。


到此,这个工作流就创建好了。快去在“请假单”中添加几条请假记录,然后再去“考勤汇总”表格中看看结果吧~


4.png



回复

举报 使用道具

相关帖子
全部回复 (8)
查看全部
感觉大家看到这个公式 ,都是蒙逼状态  

举报 回复 支持 2 反对 0 使用道具


伙伴办公-助力你的梦想!

举报 回复 使用道具

还是实现不了等于某一个变量值下的统计,只是I:C:等的常量的值

举报 回复 支持 反对 使用道具

引用 @梁超(1047189) 发表于 2016-12-22 18:17
还是实现不了等于某一个变量值下的统计,只是I:C:等的常量的值

能否说下具体的场景或者例子呢?

伙伴办公-助力你的梦想!

举报 回复 支持 反对 使用道具

我还是自己筛选来的更得心应手。。。。这公式太懵逼了

举报 回复 支持 反对 使用道具

要有极强的逻辑思维和空间思维能力才能看懂!!

举报 回复 支持 反对 使用道具

引用 @翟宁(11378) 发表于 2016-12-22 17:34
感觉大家看到这个公式 ,都是蒙逼状态

赞同

举报 回复 支持 反对 使用道具

我能请教一下。如何用工作流,根据当前选项的值(单选),统计其他表格包含当前选项的总数。其它表格的选项是多选。其备选项和当前选项是一致的,只是一个是单选,一个是多选。
来自手机

举报 回复 支持 反对 使用道具

吴杨(11012)
管理员
主题 38
回复 63
粉丝 0
|网站地图
快速回复 返回顶部 返回列表