Loading
Salesforce から送信されるメールは、承認済ドメインからのみとなります続きを読む

Soql クエリ結果の「X」文字で始まる権限

公開日: Oct 13, 2022
説明
データローダ経由で次のクエリを実行します。 
SELECT Id、PermissionSetId、AssigneeId、SystemModstamp、Assignee.Name、PermissionSet.Name、Assignee.IsActive
FROM PermissionSetAssignment 

権限セットの [名前] 列の下に結果 ID が表示されます。 

例 (PERMISSIONSET.NAME):
OCMS_Events_Tab 
ocms_autogen_b0f50000005q4vnZZZ 
X00f26000006FrycBBC 
X00e20000007Fk9JAAS 
X00e20000003Fk9OAAS, etc.

しかし、文字「X」で始まる権限が存在しません。 そのため、この権限がどこに由来するものかを知る必要があります。
解決策
Salesforce では、文字「X」で始まる権限セットはすべてプロファイル ID を表します。 したがって、権限セットの割り当てのクエリを実行すると、プロファイルの割り当てを表す行が返されます。すべてのプロファイルは権限セットで表されるため、この動作は設計どおりに機能しています。 デフォルトでは、すべてのユーザーのプロファイルに 1 つ以上の権限セットが割り当てられています。 

Salesforce のドキュメントによると、API バージョン 25.0 以降では、すべてのプロファイルには、ユーザープロファイル、オブジェクト、項目権限、エンティティアクセス設定が保存された権限セットが関連付けられます。 プロファイルが所有者の権限セットはクエリできますが、変更はできません。

次のクエリ例では、プロファイルが所有するものを含むすべての権限セットが返されます。
SELECT Id, Label, ProfileId, Profile.Name FROM PermissionSet 

次の例では、プロファイルが所有するものを除くすべての権限セットが返されます。 
SELECT Id, Label, ProfileId, Profile.Name, IsOwnedByProfile FROM PermissionSet 
WHERE IsOwnedByProfile = FALSE 

ただし、プロファイルを含めずに権限セットの割り当てのみをクエリする場合は、このクエリを次の例のように変更する必要があります。 
SELECT Id、PermissionSetId、AssigneeId、SystemModstamp、Assignee.Name、PermissionSet.Name、Assignee.IsActive 
FROM PermissionSetAssignment 
WHERE permissionSet.IsOwnedByProfile = FALSE 

これにより、プロファイルなしで権限セットの割り当てのみを取得できます。 

以下は、この問題に関するドキュメントへのリンクです。 
• Using SOQL to Determine Your Force.com User’s Permissions (SOQL を使用して Force.com ユーザーの権限を決定する)
• SOAP API Developer's Guide (SOAP API 開発者ガイド)
ナレッジ記事番号

000387815

 
読み込み中
Salesforce Help | Article