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

FieldPermissions

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

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

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

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

特別なアクセスルール

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

項目

API バージョン 50.0 以降の場合、参照項目の挿入およびクエリでは、項目名の ID を省略することも、指定することもできます。返される行では、常に API 参照名が使用されます。次に例を示します。
1Select SobjectType, Field From FieldPermissions where Field='Contact.Account'
および
1Select SobjectType, Field From FieldPermissions where Field='Contact.AccountId'
いずれの場合も次が返されます。
1Contact, Contact.AccountId
項目名 詳細
Field
型
picklist
プロパティ
Create、Filter、Group、Restricted picklist、Sort
説明
項目の API 参照名。この名前には SobjectType がプレフィックスとして付けられます。たとえば、Merchandise__c.Description__c のようになります。
ParentId
型
reference
プロパティ
Create、Filter、Group、Sort
説明
項目の親 PermissionSet の Id。
これはリレーション項目です。
リレーション名
Parent
リレーション種別
Lookup
参照先
PermissionSet
PermissionsEdit
型
boolean
プロパティ
Create、Defaulted on create、Filter、Group、Sort、Update
説明
true の場合、この親 PermissionSet に割り当てられたユーザはこの項目を編集できます。同じ項目の PermissionsRead が true である必要があります。
PermissionsRead
型
boolean
プロパティ
Create、Defaulted on create、Filter、Group、Sort、Update
説明
true の場合、この親 PermissionSet に割り当てられたユーザはこの項目を参照できます。FieldPermissions レコードでは、少なくとも PermissionsRead が true に設定されている必要があります。設定されていないと削除されます。
SobjectType
型
picklist
プロパティ
Create、Filter、Group、Restricted picklist、Sort
説明
オブジェクトの API 参照名。たとえば、Merchandise__c です。

使用方法

FieldPermissions は ObjectPermissions と同様に機能します。ただし、FieldPermissions には、項目名を返すための Field 属性が含まれています。

たとえば、次のクエリは少なくとも「参照」権限が含まれる FieldPermissions レコードをすべて返します。この結果には、項目、オブジェクト、および権限セット名が含まれます。

1SELECT SobjectType, Field, PermissionsRead, Parent.Name
2FROM FieldPermissions
3WHERE PermissionsRead = True

FieldPermissions を照会する場合には、項目の親オブジェクトが含まれます。たとえば、Account オブジェクトの Type 項目と一致するすべての行を検索するには、次のクエリを作成します。

1SELECT Id, SobjectType, Field
2FROM FieldPermissions
3WHERE Field = 'Account.Type' AND SobjectType = 'Account'

Account オブジェクトを使用して、プロファイルで裏付けられている権限セットを検索するには、次の例のようなクエリを使用できます。

1SELECT Id, ParentId, SobjectType, Field, PermissionsEdit, PermissionsRead, Parent.Name
2FROM FieldPermissions
3WHERE SobjectType = 'Account' and Parent.IsOwnedByProfile = true
4ORDER BY SObjectType, Field

クエリの SELECT 行に、SobjectType と Field の両方を含める必要があります。項目を照会する場合、項目の完全な API 名を SobjectType.Field の形式で指定します。

FieldPermission オブジェクトを使用してレコードをダウンロードする場合、使用する SOQL クエリによっては、予定したすべてのレコードを受信できないことがあります。結果が不完全に表示されることもあります。ただし、すべてのレコードはダウンロードされます。項目セキュリティがサポートされない項目および組織に表示されないエンティティは非表示になります。

メモ

項目権限の特殊なプロパティ

自動採番項目と数式項目には、項目権限の機能に関する特殊なルールがあります。どちらにも FieldPermissions レコードがありますが、挿入と更新は PermissionsRead に制限されます。これらの項目でユーザに許可されるのは参照のみであるため、PermissionsEdit はどちらのデータ型にも許可されません。

次のデータ型は、常に参照可能とみなされるため、FieldPermissions レコードは返されません。

  • Id
  • CreatedById
  • CreatedDate
  • IsDeleted
  • LastModifiedById
  • LastModifiedDate
  • SystemModStamp

次のデータ型は、常に参照可能および書き込み可能とみなされるため、FieldPermissions レコードは返されません。

  • OwnerId
  • 主従カスタム (関係) 項目
  • 必須カスタム項目

その結果、ユーザに項目への何らかのアクセス権がある場合でも、次のクエリはレコードを返しません。

1SELECT Field, SobjectType, PermissionsRead
2FROM FieldPermissions
3WHERE Field='Id'

項目が FieldPermissions レコードを返せるかどうかを判別するには、項目に対して describeSObject() をコールします。たとえば、describeSObject('Merchandise__c') は、項目のプロパティを含む、Merchandise カスタムオブジェクトのすべてのプロパティを返します。permissionable プロパティが false の項目 (このセクションに挙げた項目種別など) を使用している場合、項目権限レコードは存在しないため、それらに対するクエリ、挿入、更新、削除は実行できません。

カスタム活動項目の使用

ToDo と行動は別個のオブジェクトとみなされますが、共通の活動カスタム項目セットを共有します。そのため、カスタム ToDo 項目が作成されると、カスタム行動項目も作成されます。その逆も同様です。カスタム項目は、行動レイアウト、ToDo レイアウト、またはその両方に表示できます。

カスタム活動項目は、ToDo と行動で共有されますが、FieldPermissions レコードは ToDo と行動で別個に表示されます。ただし、一方の項目権限レコードを変更すると、もう一方も自動的に変更されます。たとえば、カスタム活動項目を作成し、権限セットで項目権限を割り当て、次のクエリを実行すると、クエリは同じ権限値を持つ 2 件のレコードを返します。

1SELECT Field, Id, ParentId, PermissionsEdit, PermissionsRead, SobjectType
2FROM FieldPermissions
3WHERE SobjectType = 'event' OR SobjectType ='task'

いずれかのレコードを別の項目権限セット値で更新し、クエリを実行すると、両方のレコードについて同じ権限値が返されます。

項目権限のネスト

PermissionSet クエリに FieldPermissions をネストできます。たとえば、次のクエリは「参照のみ項目の編集」が true の権限セットをすべて返します。また、結果セットには Merchandise オブジェクトに対する「参照」項目権限と「編集」項目権限が両方とも含まれます。同様の結果を得るためには、SOQL を項目権限のリレーション名 FieldPerms を使用する項目権限クエリでネストします。
1SELECT PermissionsEditReadonlyFields,
2(SELECT SobjectType, Field, PermissionsRead, PermissionsEdit
3FROM FieldPerms
4WHERE SobjectType = 'Merchandise__c')
5FROM PermissionSet
6WHERE PermissionsEditReadonlyFields = true

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

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

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