Pav*_*hyn 6 api rest salesforce soql salesforce-lightning
我执行 SOQL 请求以获取 SObject 'ObjectPermissions' 的所有可用记录 ID。
然后我使用请求来GET /services/data/v48.0/sobjects/ObjectPermissions/{id}获取特定记录的所有必要信息。
正如您在第一张图片中看到的,我收到了总共 960 条记录的回复。问题是对于 285 个条目,我无法获取信息。以下是我收到的 285 个答案之一的示例:
我突出显示了这条记录的标识符。可能这个id不对。
我对以下 SObject 观察到相同的情况:
TaskStatus
TaskPriority
SolutionStatus
PartnerRole
OrderStatus
FlowDefinitionView
FieldSecurityClassification EntityDefinition
ContractStatus
CaseStatus
我可以使用常规对象(例如,事件、任务和登录历史记录)观察不同 Salesforce 组织的相同行为。但这种行为并不总是在每个组织中都能重现。
是 Salesforce 做错了什么还是我不明白?
小智 4
根据您的错误描述和屏幕截图,我假设您是通过编程方式(Apex、Python、Java...)执行此操作,并且您的第一个请求(提取数据,/Query?q=)之间没有时间延迟,响应和第二个请求(基于 ID 的记录详细信息,/sobjects/ObjectPermissions/{id})
联系人是业务机会上的查找字段,下面的查询将返回相同的计数。
SELECT count() FROM opportunity WHERE contactId = null
SELECT count() FROM Opportunity WHERE contactId = '000000000000000AAA'
Run Code Online (Sandbox Code Playgroud)
设置responseIds - 从第一个请求返回的响应记录Ids,并处理这些Ids以过滤掉第二个请求的“000”Ids。
String prefix = Schema.SobjectType.ObjectPermissions.getKeyPrefix();
for(String str : responseIds){
if(!str.subString(0,3).contains(prefix)){
responseIds.remove(str);
}
}
Run Code Online (Sandbox Code Playgroud)
或者您也可以使用 /services/data/v48.0/recent (有关详细信息,请参阅 Salesforce 文档)
https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_recent_items.htm
尽管我们为每个标准选项列表都有单独的对象,但它们都共享相同的键前缀/对象类型。以下代码将删除所有针对选项列表对象的请求(任务状态、案例状态、解决方案状态...)
for(Id str : responseIds){
if(Id.getsobjecttype() == 'Picklistmaster'){
responseIds.remove(str);
}
}
Run Code Online (Sandbox Code Playgroud)
对于Loginhistory,超过6个月的记录将被salesforce内部删除。因此,如果您运行 2 个请求(查询请求、稍后的数据请求),并且如果这 2 个请求恰好位于 Salesforce 维护时段之间,则在您的第二个请求期间,引用的 ID 已从组织中删除,因此会出现错误。并确保您具有管理用户权限。
| 归档时间: |
|
| 查看次数: |
9004 次 |
| 最近记录: |