【问题标题】:How to list the API names of all managed package objects within salesforce organization如何列出 salesforce 组织内所有托管包对象的 API 名称
【发布时间】:2018-02-28 05:35:14
【问题描述】:

我正在尝试列出销售人员组织中可用的所有 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 访问托管包对象记录,我收到的错误是

消息:从 CustomObject__c 中选择 COUNT(id) ^ ERROR at 不支持行:1:列:23 sObject 类型“CustomObject__c”。如果 您正在尝试使用自定义对象,请务必附加“__c” 在实体名称之后。请参考您的 WSDL 或描述调用 为适当的名称。错误代码:INVALID_TYPE

我确实发布了问题developer.salesforce.com 还没有得到回复。

编辑:

Setup#QuickSearch#Objects 此屏幕列出了受管软件包中的对象,但Schema.getGlobalDescribe().values() 中没有相同的对象。

【问题讨论】:

    标签: salesforce


    【解决方案1】:

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

    Namespace__CustomObject__c

    您应该能够通过命名空间或删除__c后仍然包含两个连续下划线这一事实来识别它

    【讨论】:

    • @SatishakumarAwati 从我所读到的内容中,您可以获得受管软件包对象的 Sobject 描述,但可能无法在 Global Describe 中看到它,您是否拥有使用该软件包的用户许可?
    • 我不确定托管对象的可访问性如何工作,我可以看到对象屏幕 salesforce 中列出的对象,但没有出现在 Schema.getGlobalDescribe().values() 中
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-04
      • 2011-02-25
      • 2021-07-21
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多