Apex update-trigger - update lookup-Feld
Ich bin versucht zu schreiben, dass meine erste Apex update-trigger und zappelte leicht, als ich versuche, den Wert für ein benutzerdefiniertes Feld suchen.
Ich habe ein Objekt namens Deployment__c
was ist der master in einer master-detail-Beziehung mit einem Objekt aufgerufen Service__c
(Namen vereinfacht!)
Den Service__c
Feld hat keine Owner
in Salesforce, wie es ist, das Kind/detail in einer master-detail-Beziehung. Daher haben wir ein pseudo-Feld "Eigentümer" genannt Owner__c
auf das Objekt, das ist ein lookup-Feld suchen, bis die User
Objekt in Salesforce.
Ziel des triggers ist, um den Wert Service__c.Owner__c
zu der der Benutzer ist der Besitzer des Deployment__c
, wenn es keine Owner__c
bereits auf Service__c
.
Den code habe ich wie folgt:
trigger AfterServiceUpdate on Service__c (before update) {
for (Service__c oldService : Trigger.new) {
if (oldService.Owner__c == null) {
User defaultUser = [Select Id FROM User WHERE User.Id = :oldService.Deployment__r.OwnerId];
oldService.Owner__c = defaultUser.Id;
}
}
}
Allerdings bekomme ich eine Fehlermeldung, wenn ich versuche zu speichern, dies trigger:
Fehler: Compile Error: Invalid field Eigentümer__c für SObject ASE_Implementierung__c in Zeile 5 Spalte 13
Ich habe festgestellt, dass ich die Feldnamen richtig, aber kann nicht ankommen dieses zu wirken. Alle Hinweise willkommen!
InformationsquelleAutor JimmE | 2013-02-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich gerade neu erstellt, die Objekt-Struktur beschrieben, in einem test-org und nicht in der Lage war, den Fehler zu reproduzieren, die Sie bekam. Auf einer anderen Anmerkung war ich in der Lage, um die trigger, die Sie beschrieben die Arbeit mit dem folgenden code, der wurde bulkified für Sie:
Ich habe auch einen test Klasse für die zu testen, das Ergebnis:
Hoffe, das hilft!
Das funktioniert genau wie vorgesehen - viel geschätzt.
InformationsquelleAutor jonnybro
Versuchen zu ändern
owner__c
zuOwnerld
InformationsquelleAutor Shimshon Korits