阅读this tidbit后,似乎当前用户的许可无关紧要。但是,当使用具有管理员配置文件的用户调用此方法时,它会抛出INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY
异常:
global without sharing class OpportunityTeamSales {
WebService static void AssignToSalesTeam(string userId, string opportunityId)
{
OpportunityTeamMember tm = new OpportunityTeamMember();
tm.OpportunityId = opportunityId;
tm.UserId = userId;
tm.TeamMemberRole = 'Sales Engineer';
insert tm;
}
}
使用显式without sharing
关键字的事件,似乎是对对象/子对象强制执行字段级安全性/权限。 Opportunity
和OpportunityTeamMember being
系统对象,我们无法编辑关系。
更新
遇到错误的用户配置文件对Opportunity
对象具有读/写/修改权限,OpportunityTeamMember
对象似乎没有特定的权限集。我们只是尝试创建一个OpportunityTeamMember
,即用户具有完全权限的查找目标,但“删除”除外。
答案 0 :(得分:3)
without sharing
表示该类不遵守共享规则,当对象的隐私设置设置为private
时,该规则管理系统内记录的可见性。据我所知,这并不意味着对象级权限被覆盖,因此您仍然无法访问连接到用户无权访问的对象的查找字段,因此您在此处看到的错误。您需要将用户分配给可以访问这些对象的其他用户配置文件。
修改强>
假设您的用户确实拥有对对象的必要访问权限,我相信您还需要在用户的个人资料上选中“自定义应用程序”权限,以便他们能够修改销售团队。