この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

ObjectPermissions

親の PermissionSet の有効化されたオブジェクト権限を表します。このオブジェクトは、API バージョン 24.0 以降で使用できます。

ユーザにオブジェクトへのアクセス権を付与するには、ObjectPermissions レコードを、ユーザに割り当てられた PermissionSet に関連付けます。ObjectPermissions レコードは、PermissionSet のみでサポートされ、Profile ではサポートされません。

サポートされているコール

create()、delete()、describeSObjects()、query()、retrieve()、update()、upsert()

特別なアクセスルール

Summer ’20 以降、このオブジェクトにアクセスできるのは、「設定・定義を参照する」権限を持つユーザのみとなります。

項目

項目名 詳細
ParentId
型
reference
プロパティ
Create、Filter、Group、Sort
説明
このオブジェクトの親 PermissionSet の Id です。
これはリレーション項目です。
リレーション名
Parent
リレーション種別
Lookup
参照先
PermissionSet
PermissionsCreate
型
boolean
プロパティ
Create、Filter、Update
説明
true の場合、親 PermissionSet に割り当てられたユーザは、このオブジェクトのレコードを作成できます。同じオブジェクトの PermissionsRead は true である必要があります。
PermissionsDelete
型
boolean
プロパティ
Create、Filter、Update
説明
true の場合、親 PermissionSet に割り当てられたユーザは、このオブジェクトのレコードを削除できます。同じオブジェクトの PermissionsRead と PermissionsEdit は、true である必要があります。
PermissionsEdit
型
boolean
プロパティ
Create、Filter、Update
説明
true の場合、親 PermissionSet に割り当てられたユーザは、このオブジェクトのレコードを編集できます。同じオブジェクトの PermissionsRead は true である必要があります。
PermissionsModifyAllRecords
型
boolean
プロパティ
Create、Filter、Update
説明
true の場合、親 PermissionSet に割り当てられたユーザは、共有設定に関係なく、このオブジェクトのすべてのレコードを編集できます。同じオブジェクトの PermissionsRead、PermissionsDelete、PermissionsEdit、PermissionsViewAllRecords は、true である必要があります。
PermissionsRead
型
boolean
プロパティ
Create、Filter、Update
説明
true の場合、親 PermissionSet に割り当てられたユーザは、このオブジェクトのレコードを表示できます。
PermissionsViewAllRecords
型
boolean
プロパティ
Create、Filter、Update
説明
true の場合、親 PermissionSet に割り当てられたユーザは、共有設定に関係なく、このオブジェクトのすべてのレコードを表示できます。同じオブジェクトの PermissionsRead は true である必要があります。
SobjectType
型
picklist
プロパティ
Create、Filter、Group、Restricted picklist、Sort
説明
オブジェクトの API 参照名。たとえば、Merchandise__c です。

権限の連動関係

一部のユーザ権限には、オブジェクト権限との連動関係があります。たとえば、権限セットに「リード所有者の移行」権限が含まれる場合、そのリードオブジェクトの「参照」および「作成」権限も含まれます。

ObjectPermissions から親 PermissionSet オブジェクトまで照会できます。次に例を示します。

1SELECT Parent.Name, Parent.PermissionsTransferAnyLead, PermissionsRead, PermissionsCreate
2FROM ObjectPermissions
3WHERE SobjectType = 'Lead'

「すべてのデータの編集」権限によるオブジェクトアクセスの決定

SOQL を使ってオブジェクト権限を照会するときに、ユーザ権限が必要とする一部のオブジェクト権限が有効化されている場合があります。

ただし、「すべてのデータの編集」権限が有効になっている場合は例外です。この権限によってすべてのオブジェクト権限が有効化されますが、オブジェクト権限レコードが物理的にデータベースに保存されることはありません。そのため、「すべてのデータの参照」または「リードのインポート」などのユーザ権限によって必要とされるオブジェクト権限とは異なり、クエリは「すべてのデータの編集」権限を含む権限セットを返しますが、オブジェクト権限レコードには「000」で始まる無効な ID が含まれます。この ID は、オブジェクトに「すべてのデータの編集」権限によるフルアクセスがあることと、オブジェクト権限レコードを更新または削除できないことを示します。これらのオブジェクトからフルアクセスを取り除くには、「すべてのデータの編集」を無効にしてから、オブジェクト権限レコードを削除します。こうすることで、SOQL を使用してフルアクセスのあるすべてのオブジェクトを検索するときに、「すべてのデータの編集」によるフルアクセスか管理者が設定したフルアクセスかに関係なく、このアクセスを持つすべてのオブジェクトが返されます。

たとえば、次の SOQL は、「参照」権限が Merchandise__c オブジェクトに明示的に定義されているか、「すべてのデータの編集」によって暗示的に定義されているかに関係なく、Merchandise__c オブジェクトに「参照」を持つすべての権限セットを返します。

1SELECT Id, Parent.label, SobjectType, PermissionsRead,
2   Parent.PermissionsModifyAllData, ParentId
3FROM ObjectPermissions
4WHERE PermissionsRead = true and SobjectType = 'Merchandise__c'

オブジェクト権限のネスト

PermissionSet クエリに ObjectPermissions をネストできます。たとえば、次の SOQL は、「リード所有者の移行」が true である権限セットをすべて返します。さらに、結果セットには、リードの「参照」オブジェクト権限が含まれます。このためには、SOQL をオブジェクト権限のリレーション名 (ObjectPerms) を使用するオブジェクト権限クエリでネストします。
1SELECT Id,Name,PermissionsTransferAnyLead,
2(SELECT Id, PermissionsRead from ObjectPerms where SobjectType='Lead')
3FROM PermissionSet
4WHERE PermissionsTransferAnyLead = true

結果として、PermissionSet と関連する子オブジェクト (この場合 ObjectPermissions) 間のリレーションを辿ることができます。これを行うには、PermissionSet オブジェクトから子リレーション (ObjectPerms、FieldPerms など) を使用するか、子オブジェクトから Parent.permission_set_attribute を持つ PermissionSet を参照します。

重要なのは、条件付き WHERE ステートメントを使用して結果セットを限定するタイミングを考慮することです。権限セットオブジェクトの属性に基づいてクエリを行うには、SOQL を子リレーションでネストします。一方、子オブジェクトの属性に基づいてクエリを行うには、クエリで権限セットの親属性を参照する必要があります。

次の 2 つのクエリは、子リレーションを使用するか親表記を使用するかに基づいて結果が異なる同じ列を返します。
1SELECT Id, Name, PermissionsModifyAllData,
2(SELECT Id, SobjectType, PermissionsRead from Objectperms)
3FROM PermissionSet
4WHERE PermissionsModifyAllData=true
および
1SELECT Id, SObjectType, PermissionsRead, Parent.Id, Parent.Name, Parent.PermissionsModifyAllData
2FROM ObjectPermissions
3WHERE SObjectType='Merchandise__c'