因为【完成付款】的按钮,应该财务担当人才能按才对,所以设定完成付款的卡片图部分的显示条件设定。
为定义财务担当人,使用另外准备的Sharepoint 列表,然后打开PowerApps打开时参照此列表来判断当前的人是否财务担当人
- 准备列表
在Sharepoint上创建名字叫AccessControl 的列表,添加名字叫Access的单行栏(选项栏也可以)。列表的权限等按照要求编辑权限只设定管理者等 - 标题上输入邮件地址,Access里输入PurchaseRequestAdmin。邮件地址必须全部用小写,为了以后的比对正确。然后,PowerApps开发的时候使用的账号的邮箱地址也要放,否则PowerApps开发时看不到按钮就不方便
- 打开PowerApps
- 为了从PowerApps参照SharePoint列表,在PowerApps上的数据源里要添加新做的AccessControl列表
- 选择左边的数据源
- 选择Sharepoint
- 在选择连接,虽然显示同样的3个,可能选什么都可以
- 输入或者选择网站,然后选择AccessContro列表
- 就在数据源里出来AccessControl,以后可以用了
- 然后设定【完全付款】的卡片图显示条件,为了设定,准备var_showAdmin 的变量, 然后PowerApps打开的时候,当前的用户的邮箱地址和AccessControl比对,如果存在项的话就var_showAdmin 设定为true
- 点击App
- 确认公式栏里默认选择OnStart
- 公式分两部分,一个是先获取当前的用户的邮件地址,然后把他变成小写,保存到var_userEmail 变量,因为系统提供的邮件地址偶尔大小写混在一起,为AccessControl对比方便先把他变成小写,是在代码里使用邮件地址的通用方法
============================
Set(
var_userEmail,
Lower(User().Email)
);
============================ - 接下来,列表上尝试获取标题跟此var_userEmail 匹配的项,如果存在想的话,var_showAdmin 设定为true
首先获取项是这样
============================
LookUp(AccessControl,Title=var_userEmail And Access = “PurchaseRequestAdmin”)
============================ - 此命令意思为获取满足条件的第一条项,但此LookUp的结果来不能直接判断是否存在,所以获取此Lookup的结果的标题,然后此标题是否Blank 来判断该项是否存在
============================
Set(
var_showAdmin,
!IsBlank(LookUp(AccessControl,Title=var_userEmail And Access = PurchaseRequestAdmin”).Title)
);
============================ - 所以全体的命令如下
- 然后,上次创建的FinishButton卡片图的显示条件以此 var_showAdmin 来处理
- 选择FinishButton 卡片图
- Visible 里输入 var_showAdmin
偶尔,一输入var_showAdmin 就马上卡图片看不见,这是因为刚才App的OnStart里面写过去var_showAdmin 代码以后,还没启动PowerApps,所以当前开发时的var_showAdmin 是被认为 false, 这样的话,先保存一下,然后PowerApps关掉再启动就会看见。以上,设定结束。用不同的账号来运行测试,如果申请者打开此页面的话看不见完成付款,如果财务担当者打开的时候看得见。