如何为社区用户授予关联Account与外部对象的自定义对象访问权限?
解决思路与方案
1. 用Flow实现动态共享(你提到的方案可行)
- 建记录触发型Flow,当自定义对象记录创建或更新时,根据归属区分字段分支处理:
- 要是归属于Account:用Flow里的「共享元素」,给该Account关联的社区用户直接加权限
- 要是归属于外部对象:先拉取外部对象对应的社区用户(得确保外部对象和用户有映射字段),再通过「共享元素」授予权限
- 注意:Flow要开系统模式运行,保证有创建共享记录的权限
2. 写Apex触发器补共享逻辑
- 给自定义对象写
after insert和after update触发器,根据归属字段生成对应的Share记录:- 针对Account归属的记录,查社区用户的
AccountId关联关系,创建CustomObject__Share记录,把UserOrGroupId设为用户ID,ParentId设为自定义记录ID,AccessLevel设成你要的权限(比如Read或Edit) - 针对外部对象归属的记录,查外部对象绑定的用户(提前设好关联字段),同样生成
Share记录
- 针对Account归属的记录,查社区用户的
- 好处:比Flow灵活,能处理复杂关联,批量操作时更稳
3. 拆分自定义对象(可选,看业务允许不)
- 如果业务能调整,把原自定义对象拆成两个:一个专门关联Account,一个专门关联外部对象
- 这样每个对象就能单独配Sharing Set,分别对应Account和外部对象的映射规则
- 缺点:要改现有数据和业务流程,适合新系统或者重构场景
4. 结合Permission Set和Sharing Rule(限外部对象有内部对应记录的情况)
- 如果外部对象有对应的内部标准/自定义记录,可以先给内部记录开Sharing Rule授权,再用Permission Set让社区用户能访问关联的自定义对象
- 但这种方式依赖外部对象和内部记录的强绑定,适用范围窄
内容的提问来源于stack exchange,提问作者Alexia Ribeiro
相关产品推荐
相关产品推荐

