2012-01-30 84 views
1

在阅读this tidbit之后,似乎当前用户的权限将无关紧要。调用此方法,任何人,但与管理员配置文件的用户然而,当,它抛出一个INSUFFICIENT_ACCESS_ON_CROSS_REFERENCE_ENTITY例外:在Salesforce Apex WebService上实施的权限

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关键字,这似乎是强制字段级安全性/权限对象/子对象。 OpportunityOpportunityTeamMember being系统对象,我们无法编辑关系。

UPDATE:

所遇到错误的用户配置文件具有读/写/修改Opportunity对象的权限和OpportunityTeamMember对象不会出现有特定的权限设置。我们只是试图创建一个OpportunityTeamMember,用户具有完全权限的查找目标,但“delete”除外。

回答

3

without sharing表示该类别不尊重共享规则,即当对象的隐私设置设置为private时管理系统中记录的可见性的规则。据我所知,这并不意味着对象级权限被覆盖,所以你仍然不能访问加入到用户无权访问的对象的查找字段,因此你在这里看到的错误。您需要将用户分配给可以访问这些对象的不同用户配置文件。

编辑

假设你的用户确实有对象所需的访问,我相信你也需要“自定义应用程序”权限的用户的配置文件检查他们能够修改销售团队。

+0

感谢您的回复 - 我更新了问题,提供了更多关于我们正在努力完成的任务以及目标用户配置文件具有哪些权限的详细信息。 – lukiffer 2012-01-31 01:40:44

+0

给他们“自定义应用程序”确实似乎解决了这个问题,虽然这不是我们想要的。就目前而言,它回答了我的问题,我们将开始寻求更好的解决方案的其他途径。谢谢! – lukiffer 2012-02-01 16:26:31