2012-01-30 49 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