Gewusst wie: Auffüllen von lookup-Feld beim erstellen eines neuen benutzerdefinierten Objekt in SFDC
Ich habe Mühe mit dieser situation.. ich habe ein Standard-Objekt in SFDC (Möglichkeit), dass eine custom-look-up-Feld zeigt auf das User-Objekt, was ich versuche zu tun ist, füllen Sie dieses Feld mit dem Namen des Benutzers, der erstellt ein benutzerdefiniertes Objekt, das verfügbar ist in der Opportunity-layout...
also Neue GOP-Checkliste --- wählen Sie den Typ der Checkliste--- und dann füllen Sie alle erforderlichen Felder aus und klicken Sie auf speichern, wird dies zeigen wieder die Gelegenheit anzeigen. Zu beginnen mit, ist so etwas machbar ? ich weiß, dass look-up-Felder, kann schwierig sein.
und meine zweite Frage ist, was ist der beste Weg, dies zu tun Programmgesteuert (trigger) oder mithilfe der workflow-und Feld-update-Funktion ?
Dank !!
trigger TR_OrderChecklist on Order_Checklist__c (before insert) {
//----------------------------------------------------------------------------------
//Function 1: Update COS Operations Attribute in Opportunity
//----------------------------------------------------------------------------------
for(Order_Checklist__c o : trigger.new){
if(o.Opportunity__r.CARE_Operations__c == null) {
o.Opportunity__r.CARE_Operations__c = UserInfo.getUserId();
}
}
}
Dies ist, was Sie kam mit. In der Standard-Opportunity-Objekt haben wir ein lookup-Feld an den Benutzer gekoppelt.. PFLEGE_Operationen__c.. Nun, was der Auslöser sein soll ist Folgendes..
1.- Beim erstellen einer neuen GOP-Checkliste, wenn der Benutzer füllen Sie eine neue benutzerdefinierte lookup-Feld in der GOP-Objekt mit dem Namen COSOperations_c halten Sie dann den Namen,
2.- Wenn der Benutzer nicht füllen Sie die COSOperations_c Feld, aber das Feld, in das Opp-level-PFLEGE_Operationen__c aufgefüllt, die diesen Namen verwenden.
3.- Wenn weder CARE_Operations_c oder COSOperations_c aufgefüllt werden (Benutzereingaben), dann COSOperations__c gehen, um die person, die gerade das GOP-Objekt.
Dies ist, was ich habe, so weit..
trigger TR_OrderChecklist on Order_Checklist__c (before insert) {
List<Opportunity> COS_Op = new List<Opportunity>();
COS_Op = [select CARE_Operations__c from Opportunity where id in (select Opportunity__c from Order_Checklist__c where COSOperations__c != null)];
for(Order_Checklist__c OC : trigger.new) {
if(OC.COSOperations__c != null) {
break;}
if(COS_Op != null){
OC.COSOperations__c = OC.Opportunity__r.CARE_Operations__c;}
if(OC.COSOperations__c == null){
OC.COSOperations__c = UserInfo.getUserId();}
}
}
Mein problem ist in der zweiten if-Anweisung.. die anderen 2 Bedingungen richtig funktionieren.. ! Irgendwelche Ideen ? Danke !!!
- Hi Twanley. Jetzt sind die Anforderungen unterschiedlich sind.. überprüfen Sie Bitte meine Frage nochmal und danke für dein feedback.. !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meine (zweite) nehmen an der Festsetzung der trigger-code, den Sie geschrieben:
Vorausgesetzt, Sie haben die Möglichkeit.Mein_User__c als lookup(User) und Mein Objekts___c.Gelegenheit,__c als lookup(Möglichkeit) dieser trigger ist ein guter Anfang:
Für den Nachweis, dass die Lookup(Benutzer) ist wirklich nur ein Id-Feld, versuchen Sie diese übung. Erstellen Sie eine neue Lookup(Benutzer -) Feld auf die Möglichkeit Objekt mit dem Namen "Meine Benutzer".
Aus der Salesforce-web-Seite, wählen Sie eine vorhandene Verkaufschancendatensatz, und legen Sie die Meine Benutzer-Feld, um einige zufällige Benutzer-und speichern Sie den Datensatz. Der jetzt von der Entwickler-Konsole, führen Sie diese anonyme APEX:
Schließen Sie die Phantasie in der log-Ansicht und klicken Sie auf die "Open Raw Log", und Sie sehen eine Zeile wie diese:
Sehen, Salesforce denkt __c-lookup-Felder als Id-Felder. In diesem Fall ist es eine Fremdschlüsselbeziehung auf die Id des Benutzer-Objekt. Salesforce macht Sie denken, dass Sie das Name-Feld ist der Primärschlüssel, aber eigentlich ist es das Id-Feld (ok ich habe nicht wirklich gesehen, Salesforce ERD, aber ich bin mir ziemlich sicher, dass das richtig ist). Beachten Sie, dass Sie bekommen können, um die lookup-Objekt-Felder durch die __r konstruieren.
Aktualisieren das Feld ist nur eine Frage der änderung der Mein_Anwender__K-id:
Oder Sie können die Benutzer-Id aus eine soql-Abfrage wie diese:
Oder, suchen Sie einen Benutzer, indem Sie Ihre E-Mail-Adresse:
Dies ist nur ein wirklich guter Weg, um die Id des aktuellen Benutzers:
update o.Opportunity__r;
ich aktualisierte mein Auslöser zu einem mehr governor-limits freundliche version.Bin ich ein wenig verwirrt hier mit den Anforderungen.
Wir sagen, dass müssen Sie erstellen eine neue Chance Datensatzes, wenn ein Datensatz für das benutzerdefinierte Objekt erstellt wird?
Wenn also ja, es ist möglich. Schreiben Sie eine APEX-trigger in der customer-Objekt des Typs "nach dem einfügen" und erstellen Sie einen neuen Verkaufschancendatensatz, und füllen Sie die Felder wie erforderlich.