2016-06-27 9 views
4

Ich bin ein neuer Entwickler und habe eine Aufgabe, die ich erledigen muss, und ich weiß nicht genau, wie ich damit umgehen soll. Dies ist eine eckige Kalender App. Und meine Aufgabe in diesem großen Projekt besteht darin, es so einzurichten, dass ein Nutzer, der ein Feld in die Suchanfrage eingibt, nach einem bestimmten "Agency" - und "MasterAgenty" -Konto sucht, anstatt nach allen Konten zu suchen. Dies ist also eine Apex, Angular-Anwendung. Ich habe eine RecordHelper Klasse und hier ist ein Ausschnitt unten:Durchforsten von Salesforce-Konten

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

     return recordTypeIds; 
    } 

Dann habe ich eine andere Klasse erstellt, so dass ich die remoteAction es auf Angular passieren können, Schnipsel unten dargestellt:

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

Dann habe ich Verwenden Sie eine .vfr-Methode, um diese Remoteaktionsergebnisse an Angular zu übergeben. Hier ist der Winkel Code dafür:

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); 
     }); 

Also, wo ich stecken bin, ist, dass in meinem Angular Code, ich brauche die Abfrage-Anweisungen zu ändern, damit es sucht gegenüber dem Konto und MasterAccount nur. Ich denke, meine Abfrage nach der AND-Anweisung ist völlig falsch. Mein Chef hat gesagt, dass ich es durchgehen muss, aber ich weiß nicht, wie ich das angehen soll.

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

Ich hatte ursprünglich

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

Aber es hat nicht funktioniert und der Chef sagte, es sei falsch, und dass ich brauchte den Feldnamen RecordTypeId aufzunehmen. Ich weiß, ich habe eine Menge Code übersprungen, aber das sind die Änderungen, die ich gemacht habe. Jede Hilfe würde sehr geschätzt werden. Danke

+0

Ihre Frage mit einem Beispiel für die Daten neu zu schreiben (voll geblasen) Sie möchten holen und die Abfrage Sie verwenden. weil ich glaube nicht, dass jemand hier versteht, was Sie versuchen zu tun – Sam

+0

Hallo Sam, können Sie bitte erklären, was Sie mit "Beispiel für Daten (vollständig durchgebrannt)" meinen? Ich selbst kenne mich nicht gut aus, ich versuche nur mit dem Teilcode zu arbeiten, den meine Firma mir gegeben hat. – afzaaldeveloper1

+0

Ich bin kein Salesforce-Typ, aber werfen Sie einen Blick auf diese Frage http://stackoverflow.com/questions/21059620/salesforce-apex-query-accounts-based-on-activity-history?rq=1 – Sam

Antwort

1

Ich denke, dass Sie eine Kombination Ihrer zwei Versuche brauchen. Probieren Sie den folgenden Code aus, weil ich glaube, dass die IDs der gewünschten Datensatztypen int passRecordIds sind.

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