List<PermissionSetTabSetting> objectPremissionsListReset = [SELECT ParentId,Id,Name,Visibility FROM PermissionSetTabSetting WHERE parentid = '0PS2v000002SPLDGA4'];
Database.DeleteResult[] deleteObjectSettings = Database.delete(objectPremissionsListReset, false);
System.debug(deleteObjectSettings + 'Is Deleted');
2
Vijay Ganji 22 Июл 2019 в 13:48

1 ответ

Вы не можете изменять объекты метаданных, включая PermissionSet, в обычном Apex или через DML. API метаданных Apex поддерживает только Пользовательские метаданные и макеты страниц, и требует, чтобы вы поставили развертывание в очередь.

Для изменения других объектов метаданных необходимо использовать API инструментов или метаданных. Существует оболочка Apex для API метаданных, apex-mdapi.

Вы должны знать о некоторых ограничениях и соображениях, связанных с этой функциональностью:

  • Это требует вызова.
  • Вы должны будете аутентифицироваться как пользователь с разрешениями высокого уровня и возможностью настраивать Salesforce или использовать именованные учетные данные для авторизации в качестве такового.
  • Используемый код Apex может быть довольно сложным.
2
David Reed 22 Июл 2019 в 14:12
Это была моя первоначальная мысль, но PermissionSetTabSetting документирован как удаляемый, поэтому я не ответил. Возможно, этот документ ошибочен?
 – 
Thomas Taylor
22 Июл 2019 в 14:20
1
Я думаю, что документация неверна. Даже будучи системным администратором, delete выдает «Операция удаления DML не разрешена для PermissionSetTabSetting». Также установлено, что требуется разрешение View Setup, которого не должно быть достаточно, чтобы вызвать изменение конфигурации.
 – 
David Reed
22 Июл 2019 в 14:28