Types 如何为任何给定用户返回对象的默认记录类型?

Types 如何为任何给定用户返回对象的默认记录类型?,types,salesforce,apex-code,custom-object,Types,Salesforce,Apex Code,Custom Object,我有一个自定义对象,我想在其中添加一个新项目,并将其所有权分配给一个用户,该用户是通过用户输入输入的。根据所有权,记录类型没有默认为适当的值,因此我需要返回指定用户的默认记录类型,以便正确创建项目 我可以很容易地获取对象的默认记录类型,但如何为任何用户获取该类型?默认记录类型仅在配置文件(因此也是用户)级别定义,而不是为整个组织定义。因此,无论哪个用户描述该对象,都会看到他们自己为其配置文件定义的defaultRecordTypeMapping。例如,如果用户A在Apex中执行此代码: for

我有一个自定义对象,我想在其中添加一个新项目,并将其所有权分配给一个用户,该用户是通过用户输入输入的。根据所有权,记录类型没有默认为适当的值,因此我需要返回指定用户的默认记录类型,以便正确创建项目


我可以很容易地获取对象的默认记录类型,但如何为任何用户获取该类型?

默认记录类型仅在配置文件(因此也是用户)级别定义,而不是为整个组织定义。因此,无论哪个用户描述该对象,都会看到他们自己为其配置文件定义的
defaultRecordTypeMapping
。例如,如果用户A在Apex中执行此代码:

for (Schema.RecordTypeInfo rtInfo : Account.SObjectType.getDescribe().getRecordTypeInfos()) {
  if (rtInfo.isDefaultRecordTypeMapping()) {
    System.debug(rtInfo);
  }
}
将打印用户A的默认记录类型。如果用户B运行相同的代码,并被分配到具有不同默认记录类型的不同配置文件,则将打印该用户的默认记录类型


通过API使用
describeSObject()
进行SOAP操作,或者使用
/services/data/v27.0/sobjects/:object/descripe
进行REST操作,情况也是如此。

您可以按开发人员姓名获取
recordId
,请参见

试着用这个代替

Schema.SObjectType.Account.getRecordTypeInfosByDeveloperName().get('Master');

谢谢,瑞恩,是的,你说得对。如果在用户A的上下文中运行,如何返回用户B的默认记录类型?我正在创建记录并将所有权分配给多个用户,我希望确保这些记录具有正确的记录类型。这有点粗糙,但元数据API包含此信息。如果检索一个,它将返回两个中的一个。当然,您必须发出这个SOAP调用(祝您好运),然后解析结果。如果记录类型没有太大变化,您可以手动执行一次,然后解析并重用所有插入的元数据。请参阅链接以获取示例。无耻的插件,但如果您希望在不必设置元数据API客户端的情况下查看检索结果,则可以登录、迁移|检索并提供类似于(但针对您关心的组织记录类型和配置文件定制)的
package.xml
作为未打包的清单(忽略包名称). 完成以下步骤,下载文件,解压缩,然后查看
profiles
目录。很多步骤,但我知道如何获取这些信息的唯一方法。谢谢Ryan。我认为这是一个尽可能好的解决办法。