如何列出salesforce组织中所有托管包对象的API名称

时间:2018-02-28 05:35:15

标签: salesforce

我正在尝试列出salesforce组织中可用的所有API名称。我可以使用以下代码检索所有对象API名称:

for ( Schema.SObjectType o : Schema.getGlobalDescribe().values() )
{
    Schema.DescribeSObjectResult objResult = o.getDescribe();
    system.debug( 'Sobject: ' + objResult );
    system.debug( 'Sobject API Name: ' + objResult.getName() );
    system.debug( 'Sobject Label Name: ' + objResult.getLabel() );   
}

但是该列表不包含属于托管包和非托管包的对象。

而且我也试图通过workbench.developerforce.com访问托管包对象记录,我收到错误

  

消息:选择COUNT(id)FROM CustomObject _c ^ ERROR at   行:1:列:23 sObject类型'CustomObject__c'不受支持。如果   你试图使用自定义对象,请务必附加'__ c'   在实体名称之后。请参考您的WSDL或描述调用   为适当的名称。 errorCode:INVALID_TYPE

我发帖问题developer.salesforce.com尚未收到回复。

编辑:

设置#QuickSearch#Objects此屏幕包含托管包中列出的对象,但相同的对象不在Schema.getGlobalDescribe().values()中。

2 个答案:

答案 0 :(得分:0)

托管对象应在对象名称前后包含两个下划线:

Namespace__CustomObject__c

您应该能够通过命名空间或在删除__c

之后仍包含两个连续下划线的事实来识别它

答案 1 :(得分:0)

如果有人仍在寻找SOQL,也可以使用以下SOQL来实现

从ObjectPermissions中选择sobjecttype,其中parent.NamespacePrefix ='PackageName'