新しいアイテムを追加し、その所有権をユーザーに割り当てたいカスタムオブジェクトがあります。これは、ユーザー入力を介して入力されたものです。レコードタイプは、所有権に基づいてデフォルトで適切な値に設定されないため、アイテムを正しく作成できるように、指定したユーザーのデフォルトのレコードタイプを返す必要があります。
オブジェクトのデフォルトのレコードタイプを簡単に取得できますが、どのユーザーに対しても取得するにはどうすればよいですか?
新しいアイテムを追加し、その所有権をユーザーに割り当てたいカスタムオブジェクトがあります。これは、ユーザー入力を介して入力されたものです。レコードタイプは、所有権に基づいてデフォルトで適切な値に設定されないため、アイテムを正しく作成できるように、指定したユーザーのデフォルトのレコードタイプを返す必要があります。
オブジェクトのデフォルトのレコードタイプを簡単に取得できますが、どのユーザーに対しても取得するにはどうすればよいですか?
デフォルトのレコードタイプは、組織全体ではなく、プロファイル(したがってユーザー)レベルでのみ定義されます。defaultRecordTypeMapping
したがって、オブジェクトを記述しているユーザーには、プロファイルに定義された独自のユーザーが表示されます。たとえば、ユーザーAがApexでこのコードを実行する場合:
for (Schema.RecordTypeInfo rtInfo : Account.SObjectType.getDescribe().getRecordTypeInfos()) {
if (rtInfo.isDefaultRecordTypeMapping()) {
System.debug(rtInfo);
}
}
ユーザーAのデフォルトのレコードタイプが印刷されます。ユーザーBが同じコードを実行し、デフォルトのレコードタイプが異なる別のプロファイルに割り当てられた場合、そのユーザーのデフォルトのレコードタイプが出力されます。
同じことがdescribeSObject()
、forSOAPまたは/services/data/v27.0/sobjects/:object/describe
forRESTを使用したAPIでも当てはまります。
recordId
開発者名で取得できます。リリース情報を参照してください
代わりにこれを使用してみてください
Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Master');