После прочтения этого лакомого кусочка может показаться, что разрешение текущего пользователя не имеет значения.Однако при вызове этого метода от имени любого пользователя, кроме пользователя с профилем администратора, он генерирует исключение 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
системные объекты, мы не можем редактировать отношения.
ОБНОВЛЕНИЕ:
В профиле пользователя, который обнаружил ошибку, есть чтение / записьРазрешения / modify для объекта Opportunity
и для объекта OpportunityTeamMember
не имеют определенного установленного разрешения.Мы просто пытаемся создать OpportunityTeamMember
, цель поиска для которой пользователь имеет полные разрешения, за исключением «delete».