2

Я пытаюсь обновить ObjectPermissions Object в slaesforce, чтобы профиль получал разрешения на доступ к объекту, аналогичному другому профилю. я написать кодSystem.DmlException: обновление не выполнено. первая ошибка: INVALID_CROSS_REFERENCE_KEY,

мой код сегмент

PermissionSet set1 = [SELECT Id From PermissionSet 
         WHERE profileId = : SourceProfileId LIMIT 1] ; 
PermissionSet set2 = [SELECT Id FROM PermissionSet 
         WHERE profileId = : TargetProfileId LIMIT 1]; 
List<ObjectPermissions> oo = [SELECT Id, 
             SObjectType, 
             ParentId, 
             PermissionsCreate, 
             PermissionsDelete, 
             PermissionsEdit, 
             PermissionsModifyAllRecords, 
             PermissionsRead, 
             PermissionsViewAllRecords 
           FROM ObjectPermissions 
            WHERE ParentId = : set1.id]; 


List<ObjectPermissions> oo1 = [SELECT ParentId, 
             Id, 
             SObjectType, 
             PermissionsCreate, 
             PermissionsDelete, 
             PermissionsEdit, 
             PermissionsModifyAllRecords, 
             PermissionsRead, 
             PermissionsViewAllRecords 
           FROM ObjectPermissions 
            WHERE ParentId = : set2.Id]; 
Map<String , ObjectPermissions> source_obj = new Map<String, ObjectPermissions>(); 
Map<String , ObjectPermissions> target_obj = new Map<String, ObjectPermissions>(); 
for (ObjectPermissions o : oo) { 
    source_obj.put(o.SObjectType, o); 
} 
for (ObjectPermissions o : oo1) { 
    target_obj.put(o.SObjectType, o); 
} 
ObjectPermissions target, source; 
for (String s : source_obj.keySet()) { 
    if (target_obj.containsKey(s)) { 
     target = target_obj.get(s); 
     source = source_obj.get(s); 
     System.debug('Source is:' + source); 
     System.debug('Target is : ' + target); 
     target.PermissionsCreate = source.PermissionsCreate; 
     target.PermissionsDelete = source.PermissionsDelete; 
     target.PermissionsEdit = source.PermissionsEdit; 
     target.PermissionsModifyAllRecords = source.PermissionsModifyAllRecords; 
     target.PermissionsRead = source.PermissionsRead; 
     target.PermissionsViewAllRecords = source.PermissionsViewAllRecords; 
     update target; 
    } else { 
     target = new ObjectPermissions(SObjectType = s); 
     source = source_obj.get(s); 
     target.PermissionsCreate = source.PermissionsCreate; 
     target.PermissionsDelete = source.PermissionsDelete; 
     target.PermissionsEdit = source.PermissionsEdit; 
     target.PermissionsModifyAllRecords = source.PermissionsModifyAllRecords; 
     target.PermissionsRead = source.PermissionsRead; 
     target.PermissionsViewAllRecords = source.PermissionsViewAllRecords; 
     insert target; 
    } 
} 

когда управление прийти к этой линии

цели обновления; Ошибка

Ошибка обновления. Первое исключение в строке 0 с идентификатором 110i0000007KNEvAAO; первая ошибка: INVALID_CROSS_REFERENCE_KEY. Вы не можете создавать, редактировать или удалять записи для этого родителя разрешения, потому что это связано с профилем. Родитель ID: 0PSi00000009BE9: []

я не в состоянии понять это, почему я столкнулся эту ошибку, пожалуйста, кто-нибудь помощь, чтобы устранить эту ошибку

ответ

1

одаривать набор вы пытаетесь обновить уже связан с некоторыми из ваш профиль с id = 0PSi00000009BE9 перейти к

https://ap1.salesforce.com/0PSi00000009BE9 и проверьте там.