Salesforce - Apex - Запрос Счета на основе истории деятельности

StackOverflow https://stackoverflow.com//questions/21059620

Вопрос

Эй, эксперты Salesforce,

У меня есть вопрос о информации о учетной записи запроса эффективно.Я хотел бы запросить счета на основе обновлений в объекте действий.Проблема, которую я получаю, это то, что все аккаунты извлекаются независимо от того, есть ли «полное» активность или нет.Итак, есть ли способ, которым я могу написать этот запрос для получения только учетных записей с ActiveHistory, который имеет статус= «Complete» и Type_For_Reporting= 'qrc'?

List<Account> AccountsWithActivityHistories = [    
    SELECT
         Id
        ,Name
        ,( SELECT
                ActivityDate
               ,ActivityType
               ,Type_for_Reporting__c
               ,Description
               ,CreatedBy.Name
               ,Status
               ,WhatId
            FROM ActivityHistories
            WHERE Status ='complete'  and Type_for_Reporting__c = 'QRC'
        )
    FROM Account
];
.

Это было полезно?

Решение

У вас есть предложение, где на истории, но вы все еще пропускаете один на уровне аккаунта.

Например, это вернет только учетные записи, которые имеют контакты:

SELECT Id, Name
FROM Account
WHERE Id IN (SELECT AccountId FROM Contact) // try with NOT IN too
.


с деятельностью, которые это сложно, потому что они не любят использовать где таким образом использоваться.

http://www.salesforce.com/us/ Разработчик / Docs / OfficeToolKit / Content / SFOFOCE_API_CALLS_SOQL_SELECT.HTM

Следующие объекты в данный момент не поддерживаются в подзапрониках:

    .
  • Деректи о деятельностиГистория
  • Вложения
  • событие
  • eventathendeee
  • Примечание
  • openactivity
  • Теги (AccountTag, contactTag, и все остальные объекты тега)
  • задача

Дополнительно тонкая печать внизу > Определение также немного обескураживает.

Следующие ограничения для пользователей, у которых нет «Просмотреть все данные», предотвращение вопросов, предотвращающих проблемы:

    .
  • в главном предложении запроса отношений, вы можете ссылаться только только Одна запись. Например, вы не можете фильтровать во всех записях, где Имя учетной записи начинается с «A»; Вместо этого вы должны ссылаться на один запись учетной записи.
  • Вы не можете использовать, где пункты.
  • Вы должны указать предел 499 или меньше на количество строк, возвращенных в списке.
  • Вы должны отсортировать на Activitydate в порядке возрастания и простоверсифицироваться в порядке убывания; Вы можете отображать Nulls Last. Для Пример: Заказ с помощью Activitydate ASC Nulls Last, LastModiDedDate Desc.

Похоже, вам понадобится несколько запросов. Перейти к задаче (или событию, в зависимости от того, для чего видно на заказ поле), составляйте набор учетных записей, а затем запросить учетные записи?

Или вы можете вручную фильтровать список из своего исходного запроса, копирование учетных записей в списке HELPER:

List<Account> finalResults = new List<Account>();
for(Account a : [SELECT...]){
    if(!a.ActivityHistories.isEmpty()){
        finalResults.add(a);
    }
}
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top