PowerApps带深度链接审批表单报错:记录与文本类型不兼容
PowerApps业务问题追踪应用权限控制解决方案
错误原因分析
你遇到的"Incompatible types for comparison. These types can't be compared, Record: Text"错误,是因为SharePoint的**Line Manager(人员类型列)**返回的是包含Email、DisplayName等属性的记录对象,而User().Email是纯文本,两者类型无法直接比较。
修正启动屏幕判断代码
将启动屏幕的公式修改为:
If( !IsBlank(Param("ID")) && LookUp('Business Tracker', ID = Value(Param("ID"))).'Line Manager'.Email = User().Email, Newform_1, MainScreen )
核心改动:在'Line Manager'后追加.Email,提取人员列中的邮箱文本值,再和当前用户邮箱做比较,解决类型不匹配问题。
优化OnStart逻辑(可选但推荐)
为简化后续权限控制,建议在OnStart中一次性完成数据查找与权限验证:
If( !IsBlank(Param("ID")), Set(VarItem, LookUp('Business Tracker', ID = Value(Param("ID")))); Set(varIsLineManager, VarItem.'Line Manager'.Email = User().Email); Set(varFormMode, If(varIsLineManager, FormMode.Edit, FormMode.View)) )
后续可直接通过varIsLineManager变量控制字段权限,varFormMode控制表单整体模式。
配置表单字段编辑权限
在表单控件中,针对Priority和Additional comments字段,设置它们的DisplayMode属性为:
If(varIsLineManager, DisplayMode.Edit, DisplayMode.View)
确保只有直线经理能编辑这两个字段,其他用户仅可查看。
流程验证
- 用户提交新问题后,Power Automate发送带应用链接(包含ID参数)的邮件给指定Line Manager
- 直线经理点击链接打开应用,启动屏幕验证其邮箱与记录中的Line Manager邮箱匹配,进入编辑表单
- 非直线经理打开该链接,会直接跳转到主屏幕,无法进入编辑页面
内容的提问来源于stack exchange,提问作者fyfyJekwe
相关产品推荐
相关产品推荐

