2

프로필이 다른 프로필과 비슷한 개체에 액세스 할 수있는 권한을 얻도록 slaesforce에서 ObjectPermissions 개체를 업데이트하려고합니다. 나는 코드를 작성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; 
    } 
} 

이다; 오류가 발생했습니다

업데이트하지 못했습니다. id 110i0000007KNEvAAO 인 행 0의 첫 번째 예외. 첫 번째 오류 : INVALID_CROSS_REFERENCE_KEY, 프로필과 연결된 권한이므로이 권한 집합 부모에 대한 레코드를 생성, 편집 또는 삭제할 수 없습니다. 부모 ID : 0PSi00000009BE9 : []

나는이 오류를 해결하기 위해 어떤 하나 개의 도움이 오류를하시기 바랍니다 직면하고 이유를 알아낼 수 없습니까

답변