SOQL查询CAPI Profile的Account字段权限无结果,求排查建议
排查FieldPermissions查询无结果的问题
- 检查Profile名称大小写:Salesforce的Profile名称区分大小写,你写的
'capi'和实际的'CAPI'不匹配会导致查询无结果。先在Setup的Profiles列表里确认准确名称,再修正SOQL中的值。 - 验证字段权限存储逻辑:FieldPermissions的
Field字段存储的是API名称,虽然你用的几个字段API名和显示名一致,但要确认无拼写错误。另外,标准字段权限可能继承自对象级权限,如果Profile没有单独设置这些字段的权限,FieldPermissions中不会生成对应记录。 - 修正关联查询逻辑:FieldPermissions的Parent是PermissionSet,Profile是特殊类型的PermissionSet(
IsProfile = true),换用更准确的关联写法:SELECT SObjectType, Field, PermissionsRead, PermissionsEdit FROM FieldPermissions WHERE SObjectType = 'Account' AND Field IN('Name','ShippingStreet','ShippingCity') AND ParentId IN (SELECT Id FROM PermissionSet WHERE Profile.Name = 'CAPI' AND IsProfile = true) - 确认对象级权限是否存在:如果该Profile对Account对象没有Read权限,字段权限记录不会存在。先检查Profile的Account对象权限是否开启。
- 排查权限来源是否为Permission Set:如果字段权限是通过Permission Set分配给该Profile的用户,而非直接在Profile中设置,
Parent.Profile.Name的条件会过滤掉这些记录。可以先去掉该条件,查询所有Account相关字段权限,再筛选属于CAPI Profile的部分。 - 分步验证查询:在Developer Console中先执行
SELECT Id, Name FROM Profile WHERE Name LIKE '%CAPI%'确认Profile存在;再执行SELECT Id, SObjectType, Field FROM FieldPermissions WHERE SObjectType='Account'查看是否有相关字段记录,逐步缩小排查范围。
内容的提问来源于stack exchange,提问作者Niklaus
相关产品推荐
相关产品推荐

