describeLayout()
構文
使用方法
このコールを使用し、指定されたオブジェクト種別のレイアウト情報 (ユーザーへのデータの表示方法) を取得します。このコールは、詳細ページレイアウト、編集ページレイアウトおよびレコードタイプの関連付けなど、指定されたページレイアウトのメタデータを返します。詳細は、Salesforce ヘルプの「ページレイアウト」を参照してください。
一般的に、ユーザープロファイルには各オブジェクトに 1 つのレイアウトが関連付けられています。Enterprise Edition、Unlimited Edition、および Performance Edition では、ユーザープロファイルはオブジェクトごとに複数のレイアウトを使用でき、各レイアウトは指定されたレコードタイプに固有です。このコールは、適用される場合複数のレイアウトのメタデータを返します。
定義された名前付きレイアウトがある標準オブジェクトではレイアウトをさらにカスタマイズできます。名前付きレイアウトは、プロファイルとレコードタイプの両方で主レイアウトとは分離されています。名前付きレイアウトの例として、User オブジェクトで定義される UserAlt レイアウトが挙げられます。これは、主 User レイアウトではなく、Salesforce モバイルアプリケーションで使用されます。新規レイアウト名は、Salesforce でのみ定義できますが、名前付きレイアウトのカスタマイズは主レイアウトと同様にシステム管理者によって制御されます。
recordTypeIds に null 値を指定した場合、指定されたレコードタイプに対するレイアウトだけではなく、そのユーザーのすべてのレイアウトが返されます。同じレイアウトが、ユーザープロファイルの複数のレコードタイプに割り当てられていることもあるため、その場合は 1 つのレイアウトのみが返されます。
レイアウトを記述する手順は次のとおりです。
- 既存のレコードの詳細ページまたは編集ページを表示するには、クライアントアプリケーションはまずレコードの recordTypeIds を取得し、recordTypeMapping を使用してその recordTypeIds に関連付けられた layoutId を見つけます。そのレイアウト情報を使用し、最終的にページを表示します。
- 編集ページの作成バージョンを表示するには、クライアントアプリケーションは最初に 1 つ以上のレコードタイプが利用可能かどうかを確認します。利用可能な場合、ユーザーに選択肢を表示します。レコードタイプを選択すると、クライアントアプリケーションはレイアウト情報を使用しページを表示します。また、RecordTypeMapping の選択リストの値を使用し、選択リスト項目で使用する有効な選択リスト値を表示します。
- クライアントアプリケーションは DescribeLayoutResult を使用してレイアウトのラベルにアクセスできるようになります。
個人取引先レコードタイプでは次の制限が適用されます。
- バージョン 7.0 以前の describeLayout() は、タブのデフォルトが個人取引先レコードタイプである場合も、デフォルトのレコードタイプとして法人取引先レコードタイプを返します。バージョン 8.0 以降では、デフォルトのレコードタイプは常にタブのデフォルトとなります。
- バージョン 7.0 以前では、describeLayout() は個人取引先レコードタイプは一切返しません。
個人取引先レコードタイプについての詳細は、「個人取引先のレコードタイプ」を参照してください。
サンプルコード — Java
このサンプルでは、取引先 sObject のレイアウトを取得する方法を示します。記述する sObject 種別の名前を使用して、describeLayout() をコールします。このサンプルでは、3 番目の引数としてレコードタイプ ID を指定しません。つまり、指定された sObject に対して組織でレコードタイプが定義されている場合は、すべてのレコードタイプのレイアウトが返されます。レイアウトの取得後に、このサンプルでは、見つかった詳細セクションと編集セクションの数とそのヘッダーを書き込みます。次に、編集レイアウトセクションごとに反復処理を行い、そのコンポーネントを取得します。
サンプルコード — C#
このサンプルでは、取引先 sObject のレイアウトを取得する方法を示します。記述する sObject 種別の名前を使用して、describeLayout() をコールします。このサンプルでは、3 番目の引数としてレコードタイプ ID を指定しません。つまり、指定された sObject に対して組織でレコードタイプが定義されている場合は、すべてのレコードタイプのレイアウトが返されます。レイアウトの取得後に、このサンプルでは、見つかった詳細セクションと編集セクションの数とそのヘッダーを書き込みます。次に、編集レイアウトセクションごとに反復処理を行い、そのコンポーネントを取得します。
引数
| 名前 | 型 | 説明 |
|---|---|---|
| sObjectType | string | 指定された値は、組織で有効なオブジェクトである必要があります。オブジェクトが個人取引先である場合は Account を指定し、個人取引先責任者である場合は Contact を指定します。 |
| layoutName | string | 指定された値は、このオブジェクトの有効な名前付きレイアウトである必要があります。レイアウト名は、DescribeSObjectResult の namedLayoutInfos から取得されます。主レイアウトは「名前付き」とは見なされないため、エンティティ名は有効ではありません。 |
| recordTypeIds | ID[] |
任意で指定できるパラメーターにより指定されたレコードタイプに返されたレイアウトデータを制限します。 プライマリレコードタイプのレイアウトを取得するには、オブジェクトに関わらず recordTypeIds に値 012000000000000AAA を指定します。この値は、DescribeSObjectResult でプライマリレコードタイプの recordTypeInfos として返されます。SOQL クエリでは、012000000000000AAA ではなく null 値を返します。 ID についての詳細は、「ID データ型」を参照してください。 |