есть метод, который работает с разными кастомными объектами как с sObject-ами, так у них у всех одни и те же названия полей и операции.
вот так получаю записи:
List <sObject> listTickets = Database.query('SELECT ID, Duration__c, Owner.Name, Owner.Email FROM Ticket__c');вот так добираюсь до кастомного поля:
rec.get('Duration__c');а вот так уже не могу (а так хотелось):
rec.get('Owner.Name');получаю
System.SObjectException: Invalid field Owner.Name for Ticket__c
вот так выцепить весь связанный объект тоже не получается:
rec.get('Owner');есть идеи? как правильно получить связанный объект\его поля у sObject-а?
спасибо
PS: кажется нашел здесь:
http://salesforce.stackexchange.com/questions/24801/using-sobject-get-to-fetch-a-field-value-from-a-related-parent-object
сейчас буду пробовать
getSobject должен работать
да, работает
А если тебе надо достать child записи, которые кверишь inner soql
то используй getSobjects (s наконце). ![]()
Кстати, вопрос на засыпку - чем отличается обращение вида accountRecord.Contacts от accountRecord.getSObjects('Contacts')?
[/quote]
у меня есть только самый очевидный ответ: если объявили объект как account, то используем accountRecord.Contacts, а если как sObject - то accountRecord.getSObjects('Contacts')...
Даже не побоюсь написать что не знаю
Жду ответ ![]()
Обращение вида accountRecord.Contacts всегда вернёт list, даже если соответствующий related list пустой, а вот accountRecord.getSObjects('Contacts') в таком случае вернёт null.
О, слушай! Как совпало! Буквально недавно фиксил один баг в проложении которое построенно чисто не динамических запросах. И было такое место где результат getSObjects() передавался в for. B валился естестенно на null. Я не придал тогда этому значения, чисто поставил проверку на null перед for. А вот оно что оказывается :D. Спасибо, теперь запомню ![]()