У нас есть требование, после конвертации лидов мы отправляем данные о них партнеру. У нас есть пакетный процесс, который будет периодически искать новые конвертированные лиды, массово отправлять данные партнеру, а затем сохранять ConvertedAccount.Was_Sent_to_Partner__c было true для каждого из сохраненных лидов.

Наш запрос выглядит так:

Database.getQueryLocator([
                SELECT Id, External_Id__c
                FROM Lead
                WHERE IsConverted = TRUE
                        AND ConvertedAccountId != NULL
                        AND ConvertedAccount.Was_Sent_to_Partner__c != TRUE
        ]);

Но проблема в том, что некоторые значения никогда не устанавливались, поэтому при запросе с помощью редактора запросов консоли разработчика их значение отображается как (null ConvertedAccount) .... которое явно не равно ни false, ни null.

Есть ли способ отфильтровать это значение?

0
Brian Kessler 3 Сен 2020 в 18:56
ConvertedAccount.Was_Sent_to_Partner__c = null или ConvertedAccount.Was_Sent_to_Partner__c = '' в предложении WHERE должны работать. Я могу сделать это в своей организации.
 – 
arut
3 Сен 2020 в 19:39
@anut, ConvertedAccount.Was_Sent_to_Partner__c - это флажок / логическое значение, поэтому '' определенно не будет работать.
 – 
Brian Kessler
3 Сен 2020 в 21:11
Упс... Я пробовал на своем конце с ConvertedAccount.Name и пропустил, чтобы заметить, что ваше поле Was_Sent_to_Partner__c является логическим. Итак, я полагаю, вы действительно хотели сравнить SOQL с ConvertedAccountId?
 – 
arut
4 Сен 2020 в 06:04
Не уверен, что вы имеете в виду под вопросом. ... Но кажется, что дополнительные строки, которые я видел в консоли разработчика, были ложными срабатываниями, потому что учетные записи больше не существовали, хотя их значение не было нулевым в лиде. Я решил проблему, изменив ConvertedAccountId != NULL на ConvertedAccount.Id != null.
 – 
Brian Kessler
4 Сен 2020 в 17:18
Я собирался предложить то же самое, то есть использование ConvertedAccount.Id, но подумал, что вы, возможно, уже поняли это, основываясь на ответе Дэвида. Итак, мой предыдущий комментарий закончился вопросом.
 – 
arut
4 Сен 2020 в 19:29

1 ответ

Лучший ответ

Это как раз то, что показывает консоль разработчика, когда вы запускаете запрос на отношения, а отношение в данной строке равно null. В этой ситуации ConvertedAccountId равно null. Вы не можете и не должны пытаться фильтровать значение (null XXXXX), потому что это артефакт пользовательского интерфейса консоли разработчика.

2
David Reed 3 Сен 2020 в 19:39
Только что перечитал ваш ответ и понял неточность. ConvertedAccount имеет значение null, но ConvertedAccountId не равно null... Я бы подумал, что это невозможно и, возможно, это дефект.... но в этом суть проблемы. Однако это исправляется проверкой ConvertedAccount.Id вместо ConvertedAccountId.
 – 
Brian Kessler
6 Сен 2020 в 00:56