Français
Presentations About Resources

Vos données à votre portée avec Salesforce, Python, SQL, & et plus -- un blog bilingue anglais/français

Recalcul des champs de formule Salesforce en Apex

10 Sep 2019 🔖 salesforce apex astuces tutoriels
💬 FR ( Read this post in English )

L’édition hiver ‘20 de Salesforce inclue une nouvelle classe Apex Formule – regardez ici un exemple de ses capacités.

James Hou a annoncé, dans l’excellent résumé de l’édition hiver ‘20 de Salesforce sur Reddit, traduit par Windyo :

Recalcul des formules en Apex : c’est ENORME.

Cette release permet de calculer les formules, en batch, sans opération DML.

De fait, ça permet donc de laisser les champs formules gérer les calculs un peu complexes, et d’en utiliser les résultats en Apex sans sauvegarder.

Et c’est vrai !

Voyons un petit exemple :

@isTest
public class UnTest {

	static testMethod void executerTest() {
		ObjetParent__c parent = new ObjetParent__c(
			Name = 'Un parent',
			Code__c = 'ABAB'
		);
		INSERT parent;
		
		ObjetEnfant__c enfant = new ObjetEnfant__c(
			Name = 'Un enfant',
			Code__c = 'XYXY',
			Parent__c = parent.Id
		);
		System.assertEquals(NULL, enfant.Formule_Code_Concatene__c);
		
		Test.startTest();
		Formula.recalculateFormulas(new List<ObjetEnfant__c>{enfant});
		Test.stopTest();
		
		System.assertEquals('ABAB|XYXY', enfant.Formule_Code_Concatene__c);
	}
}

Notez que l’objet dit « enfant » n’existe pas dans la base de données.

Je ne l’ai pas encore enregistré avec une commande INSERT.

Et quand même, après la commande Formula.recalculateFormulas(), le valeur de son champ Formule_Code_Concatene__c est ABAB|XYXY.

Notez: Dans ce cas, la formule est:

Parent__r.Code__c
& "|" &
Code__c
--- ---