之前我们分享的案例里,我提了一嘴我们的客户有一个需求,就是审批人要有能力修改其他人表单中的部分字段。
今天我们就来分享一下如何实现这个功能。
要实现这个效果,我们需要判断三个值——当前审批人是不是当前登录人、当前审批节点可以修改那个字段,以及审批状态是不是“审批中”。
毕竟是审批人更改表单字段的值,所以理所当然的当前登录人必须得是表单的当前审批人,同时,我们最好确认一下这个字段在那个审批节点可以被修改,比如我们这次分享的案例,“是否有预算”字段需要在第二个审批节点“财务审批”中由财务填写,那么我们最好就做一个限制,限制这个字段只能在运行到第二个节点的时候可以修改。
首先,除了我们几乎给每个表单标配的审批状态,以及部分客户有需求时我们会加上的当前审批人这两个字段外,还要再额外加一个字段用来标记当前审批进入到第几个节点了,我把这个字段命名为“审批标记”,第一个节点审批标记为0,第二个为1,以此类推。
这样的话我们才可以定位到当前审批节点,以实现当流程进入第二个审批节点,即财务审批的时候,“是否有预算”字段才可以被编辑。
然后我们选择建立Power Apps自定义表单。
修改“是否有预算”字段的显示模式。
这里先判断了审批状态的值,当审批状态为“审批中”的时候,才能修改相关字段。
然后是判断当前审批人的邮箱是否等于当前登陆人的邮箱。
最后判断审批表及是否为1,即当前审批节点是否是“财务审批”。
当这三个条件全部成立时,该字段才可被编辑,以确保只有“财务审批”节点的审批人可以编辑这个字段,其他人,包括发起人都没办法编辑。
这样改完之后,我们还需要处理一下表单提交后,除了“是否有预算”字段外,其他字段需要全部进入只读状态的问题,就是表单提交后,除了“是否有预算”字段外,其他字段任何人不得再更改。
之前我们处理“表单提交后字段不能再更改”这个问题是直接让整个表单只读,就像这样:
但这回不能用这个方法了,毕竟全表单只读之后,这个“是否有预算”字段也就无法编辑了。
那我们就只能给每个字段的显示模式都上一个判断了。
要给每一个字段都上一个这个判断哟。
这个判断可以根据需要自行修改,比如有些客户可能会要求表单在“拒绝”状态下,发起人可以重新编辑表单,无非就是改一下判断条件罢了。
注意,改显示模式的时候不要手快把“是否有预算”字段的可见性也一块改了哟。
至于有些需要全程只读的字段那就直接改显示模式的值就好了。
解决这个问题之后我们还需要解决“审批状态”字段的一个问题。
因为我们要实现表单提交后,审批状态自动变成“已提交”,这是为了防止流程对表单进行修改后重复触发流程,所以我们对表单的设定是点击“提交”按钮,变量locIsSubmit
会变为true,而当locIsSubmit为true的时候,审批状态会自动变为“已提交”。
这样会出现一个问题,就是当审批人对“审批状态”字段作出修改后,点击系统的保存键
将会导致locIsSubmit变量没有值,使得审批状态被清空。
(点提交键会把状态改成“已提交”,流运行过程中需要审批状态保持为“审批中”)
这个案例里还好,因为这个案例的表单没有“草稿”状态。
对于我们之前做过的,有“草稿”状态的表单,这样会导致审批状态直接变成“草稿”,虽然对流程影响不大,但这样会导致发起人可以编辑表单了。
解决方法就是在设置“审批状态”字段自动改变值的时候做一下判断。
当“审批状态”字段没有值的时候,才会根据locIsSubmit变量改变值,否则该字段原本的值是多少,那就还是多少。
这样的话就已经可以实现审批人可以修改其他人表单中的部分字段的能力了。
之后我们在Power Automate中实时更新当前审批人和审批标记就好了。
注意一下Power Automate更新人员字段的方式,用的是人员的Claims,有点子反人类😂,想看人员的Claims可以回到PA的人员输入框。
这样一设置,然后再搜索指定人员的名字,就可以看到这个人的Claims了。
这样设置完了之后,只要流程到了对应的审批节点,这个节点的审批人就可以修改表单中指定的字段了,而其他字段则依然不能修改。