Есть желание написать запрос для получения родительского и дочернего объекта, только если он есть. Пример запроса: [Select Id, Name, (Select Id, Name From Contact) From Contact Where Count(Contact) > 0] Только так делать нельзя. Может кто подскажет рабочее решение.
Есть желание написать запрос для получения родительского и дочернего объекта, только если он есть.
Пример запроса:
[Select Id, Name, (Select Id, Name From Contact)
From Contact Where Count(Contact) > 0]
Только так делать нельзя.
Может кто подскажет рабочее решение.
==================================================================================================
A можно как-то проверить было ли поле в запросе?
Т.е. Account a = [Select Id From Account]
a.Name - you got exception
Если метод для проверки, чтобы не получить ошибку?
Советуют так:
[Select Id, Name, (Select Id, Name From Contact)
From Contact Where Id in (Select AccountId From Contact)]
Ну уж сильно много запросов
Ну да, в интернете именно такие примеры. Я бы для этого замутил что-то кастомное на подобии RollupSummary только для Lookup поля (вот тут обсуждается) И потом просто селектил по WHERE children > 0
[quote="Gres"]Советуют так:
[Select Id, Name, (Select Id, Name From Contact)
From Contact Where Id in (Select AccountId From Contact)]
Ну уж сильно много запросов[/quote]
Ну да, в интернете именно такие примеры.
Я бы для этого замутил что-то кастомное на подобии RollupSummary только для Lookup поля
(вот [url=http://salesforce.stackexchange.com/questions/33650/how-to-write-a-rollup-summary-trigger-for-a-lookup-relationship]тут[/url] обсуждается)
И потом просто селектил по WHERE children > 0
Кст, Дмитрий, спасибо за возможность отключения email уведомлений!
[quote="Gres"]A можно как-то проверить были ли поле в запросе?
Т.е. Account a = [Select Id From Account]
a.Name - you got exception
Если метод для проверки, чтобы не получить ошибку?[/quote]
Знаю я один способ, но он тебе совсем не понравится....
[quote="Gres"][quote="wilder"]Знаю я один способ, но он тебе совсем не понравится....[/quote]
try-catch ?[/quote]
Не это еще нормальный способ. Мой способ если я правильно помню позволял получить список полей доступных для обращения причем все сразу.
[quote="Gres"][quote="wilder"]Работает?[/quote]
Нет[/quote]
Странно но тут 2 варианта. Либо я не понял задание, либо кто-то плохой танцор. Логи прилагаю.
[code]
Contact A = new Contact (LastName ='Test',FirstName='Test1');
system.debug(LoggingLevel.error, A + '\n\n' + CheckFls(A));
[/code]
[code]
ERROR|Contact:{FirstName=Test1, LastName=Test}
{firstname=FirstName, lastname=LastName}
[/code]
Из того что я вижу в логах, мой метод выводит только те поля, которые определены.
Wilder хочется сказать тебе спасибо за идею сериализации объекта, она помогла решить многие задачи.
[url=https://salesforce-developer.ru/community/developer/wilder]Wilder[/url] хочется сказать тебе спасибо за идею сериализации объекта, она помогла решить многие задачи.
Wilder хочется сказать тебе спасибо за идею сериализации объекта, она помогла решить многие задачи.
[quote="Gres"][url=https://salesforce-developer.ru/community/developer/wilder]Wilder[/url] хочется сказать тебе спасибо за идею сериализации объекта, она помогла решить многие задачи.[/quote]
Не за что :)