2016-06-27 5 views
4

Я новый разработчик, и у меня есть задача, которую мне нужно выполнить, и я совершенно не знаю, как справиться. Это приложение с угловым календарем. И моя задача в этом большом проекте состоит в том, чтобы просто заставить его функционировать так, чтобы, когда пользователь вводит поле в поисковый запрос, он ищет против определенных учетных записей «Агент» и «МастерАгентство» вместо поиска по всем учетным записям. Итак, это приложение Apex, Angular. Я создал класс RecordHelper и вот фрагмент ниже:Looping через Salesforce Accounts

public static Set<Id> getAgencyRecordTypeIds(){ 
     Set<Id> recordTypeIds = new Set<Id>(); 
     recordTypeIds.add(GetRecordTypeIdByDeveloperName('Account','Agency')); 
     recordTypeIds.add(GetRecordTypeIdByDeveloperName('Account','MasterAgency')); 

     return recordTypeIds; 
    } 

Затем я создал еще один класс, так что я могу использовать remoteAction передать его Угловым, фрагмент код показан ниже:

@RemoteAction 
    public static Set<Id> passRecordsIds() { 
     Set<Id> fetchRecordTypeIds = RecordTypeHelper.getAgencyRecordTypeIds(); 
     return fetchRecordTypeIds; 
    } 

Тогда я использовал метод .vfr, чтобы передать результаты удаленного воздействия в Угловое. Вот Угловой код для него:

var passRecordsIds = vfr.send('S1_PAV_CalendarController.passRecordsIds', $scope.data.SFSendOpts, false); 
      passRecordsIds().then(function(result){ 
             $scope.typeRecord = result; 
             $log.debug($scope.typeRecord); 
            } 
            ,function(error){ 
             $log.error('passRecordsIds error'); 
             $log.error(error); 
             $window.alert(error.message); 
     }); 

Так где я застрял в том, что в моей угловой коде, мне нужно изменить операторы запроса так, что он ищет против счетов и только MasterAccount. Я думаю, что мой запрос после утверждения AND абсолютно неправильный. Мой босс сказал, что мне нужно пройти через него, но я не знаю, как это решить.

var queryString = $scope.ACCOUNT_SELECT_PART + " FROM Account WHERE" + " (Name Like '%" + searchTerm + "%' OR Safeco_Sub_Stat__c Like '%" + searchTerm + "%') AND RecordTypeId IN ('Agency', 'MasterAgency')"; 

Я первоначально написал

var queryString = $scope.ACCOUNT_SELECT_PART + " FROM Account WHERE" + " (Name Like '%" + searchTerm + "%' OR Safeco_Sub_Stat__c Like '%" + searchTerm + "%') AND typeRecord IN :passRecordsIds"; 

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

+0

перепишите свой вопрос на примере данных (полностью выдутых), которые вы хотите извлечь, и запроса, для которого вы используете. потому что я не думаю, что кто-то здесь понимает, что вы пытаетесь сделать. – Sam

+0

Привет, Сэм, Не могли бы вы объяснить, что вы подразумеваете под «примером данных (полностью взорван)»? Я сам не очень хорошо знаком со всеми учетными записями, я просто пытаюсь работать с частичным кодом, который предоставила мне моя компания. – afzaaldeveloper1

+0

Я не специалист по продажам, но взгляните на этот вопрос http://stackoverflow.com/questions/21059620/salesforce-apex-query-accounts-based-on-activity-history?rq=1 – Sam

ответ

1

Думаю, вам нужна комбинация ваших двух попыток. Попробуйте использовать код ниже, потому что я считаю, что идентификаторы типов записей, которые вы хотите, - int passRecordIds.

var queryString = $scope.ACCOUNT_SELECT_PART + " FROM Account WHERE" + " (Name Like '%" + searchTerm + "%' OR Safeco_Sub_Stat__c Like '%" + searchTerm + "%') AND RecordTypeId IN : passRecordsIds";