Loading
Предоставление общего доступа к записям в расширенных утверждениях

Предоставление общего доступа к записям в расширенных утверждениях

Предоставьте ответственным за утверждение общий доступ к связанным записям, настроив триггеры. После завершения действия утверждения используйте триггер для отмены доступа к записи.

При отправке записи на утверждение ответственный за утверждение должен иметь доступ к связанному объекту записи для выполнения действий над запросом на утверждение. Если внутренним единым стандартным параметрам общего доступа к объекту задано значение «Личный», можно использовать триггер для создания объекта общего доступа, предоставляющего доступ ответственному за утверждение. После утверждения записи можно отменить доступ к записи, используя триггер для удаления записи общего доступа.

  1. Создайте триггер Apex для предоставления общего доступа к связанному объекту записи. В разделе «Безопасность» выберите профиль ответственного за утверждение. См. Определение триггеров Apex.
    Совет
    Совет

    При предоставлении общего доступа к настраиваемому объекту можно создать причину общего доступа к Apex и добавить ее в триггер. Причина общего доступа к Apex ограничивает доступ к записи определенным сценарием использования.

  2. Создайте триггер Apex для удаления записи общего доступа и отзыва доступа к записи после завершения запроса на утверждение. В разделе «Безопасность» выберите профиль ответственного за утверждение.

    Фрагмент образца кода можно настроить в соответствии с вашим конкретным сценарием использования.

    trigger AWIUpdate on ApprovalWorkItem(after update) {
    List<ApprovalWorkItem> awiList = new List<ApprovalWorkItem>();
    // Get the related opportunities for the accounts in this trigger
    awiList = [SELECT Id, RelatedRecordId, AssignedToId FROM ApprovalWorkItem WHERE Id IN :Trigger.new];
    
    for (ApprovalWorkItem awi : awiList) {
    // Use the related record id, to delete the share record created for the user
    
    Id relatedRecordId = awi.RelatedRecordId;
    Id assignedToId = awi.AssignedToId;
    
    SObjectType relatedRecordType = relatedRecordId.getSObjectType();
    if (relatedRecordType.getDescribe().isCustom()) {
    Map<String, Schema.SObjectType> tokens = Schema.getGlobalDescribe();
    String relatedRecordShareName = relatedRecordType.getDescribe().getName().removeEnd('__c') + '__Share';
    if(tokens.containsKey(relatedRecordShareName)) {
    // Share object exists
    SObject[] customShare = Database.query('SELECT Id FROM '
    + relatedRecordShareName + ' WHERE '
    + ' RowCause = \'AdvancedApprovalTriggerShareReason__c\' '
    + ' AND ParentId = :relatedRecordId'
    + ' AND UserOrGroupId = :assignedToId');
    } else {
    // OWD is Public Read Write
    }
    }
    }
    }
    
 
Загрузка
Salesforce Help | Article