#salesforce #apex
Вопрос:
У меня есть контракт на объект, в котором есть поиск по другому типу индексации объекта. У меня есть еще один объект IndexationEntry, у которого есть основные сведения к типу индексации. Теперь я хотел бы получить значение поля «Процент» в поле «Индексация» в контракте на основе ваших полей. Год в индексации совпадает с Годом в Контракте. Как я должен этого достичь?
Ответ №1:
От контракта «вверх» до типа индексации__c, затем «вниз» до индексации__c?
Если между ними нет прямой связи, это будет некрасиво. Одним из способов было бы что-то вроде этого
SELECT Id, Name,
(SELECT Id, ContractNumber FROM Contracts__r WHERE Year__c = '2021'),
(SELECT Id, Percent__c FROM IndexationEntries__r WHERE Year__c = '2021')
FROM IndexationType__c
Вам придется запускать его один раз в год. Или (поскольку вы отметили его как Apex), возможно, вы можете немного подготовить справочные данные, запросить типы индексации Записи и построить что-то вроде Map<Id, Map<Integer, IndexationEntry__c>>
(1-й ключ по идентификатору типа индексации, затем по году). Запросите их, заполните карту, затем просмотрите свои контракты и используйте map.get() для получения ваших значений.