Основываясь на описании вашей ошибки и снимке экрана, я предполагаю, что вы делаете это программно (Apex, Python, Java ...) и нет временной задержки между вашим первым запросом (извлечение данных, / Query? Q =), ответ и второй запрос (детали записи на основе идентификатора, / sobjects / ObjectPermissions / {id})
- Записи с '000' могут быть идентифицированы как EmptyKeys в Salesforce и обычно относится к нулевым значениям отношений.
Контакт - это поле подстановки в Opportunity, и запросы ниже возвращают такое же количество.
SELECT count() FROM opportunity WHERE contactId = null
SELECT count() FROM Opportunity WHERE contactId = '000000000000000AAA'
Что касается записей в разрешении объекта (
, начиная с '000' ), мало отличается от пустых ключей, а разбивку идентификаторов можно найти в блоге
Загадка префикса ключа Salesforce «000»
В приведенном выше сценарии мы не можем отфильтровать эти объекты в запросе Metadata API, однако мы можем фильтровать записи перед отправкой второго запроса в коде APEX.
Set responseIds - Response идентификаторы записей, возвращенные из первого запроса, и обработка идентификаторов для фильтрации идентификаторов «000» для второго запроса.
String prefix = Schema.SobjectType.ObjectPermissions.getKeyPrefix();
for(String str : responseIds){
if(!str.subString(0,3).contains(prefix)){
responseIds.remove(str);
}
}
Объект RecentlyViewed не может использоваться напрямую. Идентификаторы в этом объекте не являются идентификаторами, принадлежащими недавно просмотренному объекту, вместо этого они являются идентификаторами фактических записей. Поэтому, если вы намереваетесь получить доступ к записям этого объекта, вам нужно получить идентификаторы из недавно просмотренного объекта, затем декодировать ключевой префикс, чтобы получить правильное имя sObject, а затем использовать его таким образом
/ sobjects / {decodedSobjectName} / {ID} Или вы можете использовать /services/data/v48.0/recent (подробности см. В документации Salesforce)
https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_recent_items.htm
Хотя у нас есть отдельный объект для каждого стандартного списка выбора, все они имеют один и тот же префикс ключа / тип объекта. Следующий код удалит все запросы, которые направлены к объектам раскрывающегося списка (Taskstatus, Casestatus, статус решения ...)
for(Id str : responseIds){
if(Id.getsobjecttype() == 'Picklistmaster'){
responseIds.remove(str);
}
}
Что касается Loginhistory, записи после 6 месяцев будет удален отделом продаж. Итак, если вы запустите 2-й запрос (запрос-запрос, последующий запрос данных), и если этот 2-й запрос произойдет с l ie между окном обслуживания Salesforce, то во время вашего второго запроса указанный идентификатор уже удален из организации, следовательно, ошибка . И убедитесь, что у вас есть разрешения на управление пользователями.