Apex déclencheur de mise à jour - mise à jour du champ de recherche
Je suis en train d'écrire mon premier Apex déclencheur de mise à jour et de la difficulté légèrement que je suis en train de définir la valeur d'un champ de recherche.
J'ai un objet appelé Deployment__c
qui est le maître dans une configuration maître-détail de la relation avec un objet appelé Service__c
(noms simplifié!)
La Service__c
champ n'a pas de Owner
dans Salesforce que c'est l'enfant/détail d'un maître-détail de la relation. Par conséquent, nous avons créé un pseudo-champ propriétaire appelé Owner__c
sur cet objet, qui est un champ de recherche à la recherche de la User
objet dans Salesforce.
Le but de le déclencheur pour régler la valeur de Service__c.Owner__c
à celle de l'utilisateur qui est le propriétaire de Deployment__c
, si il n'y a pas de Owner__c
déjà mis sur Service__c
.
Le code que j'ai est comme suit:
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;
}
}
}
Cependant, j'ai une erreur quand j'essaie d'enregistrer ce déclencheur:
D'erreur: Erreur de Compilation: champ non Valide Propriétaire__c pour SObject ASE_Déploiement__c à la ligne 5 colonne 13
J'ai vérifié que j'ai le champ nom correct, mais ne pouvez pas obtenir que cela fonctionne. Tous les pointeurs bienvenue!
Vous devez vous connecter pour publier un commentaire.
J'ai juste recréé que la structure de l'objet que vous avez décrits dans un test org et a été incapable de reproduire l'erreur que vous avez obtenu. Sur une autre note, j'ai été en mesure d'obtenir le déclencheur, vous avez décrit de travailler avec le code suivant qui a été bulkified pour vous:
J'ai également créé une classe de test pour tester le résultat:
Espérons que cette aide!
Essayer de changer
owner__c
àOwnerld