Vous êtes sur la page 1sur 72

Dveloppement Apex et Visualforce

Axel KAMALAK 09/03/2013

http://axelkamalak.eu

Ce document explique les points suivants : Installation IDE Force.com sous Eclipse ; Les triggers ; Les classes ; La programmation Apex et Visualforce ; Le dataloader

1
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

TABLE DES MATIERES


Table des matires.............................................................................................................................................................1 Installer lIDE ..................................................................................................................................................................3 Le jeton de scurit .........................................................................................................................................................6 Plages de connexion IP .................................................................................................................................................6 Mode before ou Mode after .................................................................................................................................... 15 Les mthodes et les attributs : ................................................................................................................................... 20 Les mthodes sont dclares de la manire suivante : ................................................................................... 21 Les types de variable ..................................................................................................................................................... 24 Les oprateurs .................................................................................................................................................................. 25 Les conditionnels : .......................................................................................................................................................... 25 Les rptitives : ................................................................................................................................................................ 26 Les rptitives : ................................................................................................................................................................ 29 Les collections .................................................................................................................................................................. 29 Les listes : ........................................................................................................................................................................... 29 Set .......................................................................................................................................................................................... 30 Map ....................................................................................................................................................................................... 30 Le langage SOQL .............................................................................................................................................................. 32 Supprimer un enregistrement .............................................................................................................................. 34 Les limites Salesforce .................................................................................................................................................... 35 Les mthodes de test ..................................................................................................................................................... 38 Taux de couverture du code : ................................................................................................................................ 41 Architecture dune page Visualforce ....................................................................................................................... 43 Contenu dune page visualforce ................................................................................................................................ 44 Voici le rsultat daffichage de ma page : .............................................................................................................. 44 Gnrer un PDF............................................................................................................................................................... 45 Droit Profil ........................................................................................................................................................................ 45 Mode de Dveloppement sous Salesforce............................................................................................................. 46 Voici le rsultat : .............................................................................................................................................................. 47 Crer un objet personnalis........................................................................................................................................ 47 Crer un onglet pour lobjet personnalis ............................................................................................................ 48 Le contrleur personnalis ......................................................................................................................................... 50 Le constructeur ................................................................................................................................................................ 50 Afficher une variable ..................................................................................................................................................... 50 Voici le rsultat daffichage : ....................................................................................................................................... 51

Axel KAMALAK

http://axelkamalak.eu

2
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Crer un titre daffichage dans la page visualforce ........................................................................................... 52 Afficher les enregistrements existants ................................................................................................................... 52 Lire les enregistrements .............................................................................................................................................. 53 Voici le rsultat daffichage ......................................................................................................................................... 54 Le mode Edit ..................................................................................................................................................................... 54 Sur la page Visualforce.................................................................................................................................................. 55 Le contrleur..................................................................................................................................................................... 57 Changer le mode ddition........................................................................................................................................... 58 Le bouton Cancel ............................................................................................................................................................. 58 Le bouton save ................................................................................................................................................................. 59 Afficher les composants ............................................................................................................................................... 59 Crer un enregistrement .............................................................................................................................................. 59 Sauver lenregistrement courant .............................................................................................................................. 60 Annuler la modification ................................................................................................................................................ 61 pagination avec bouton next et prev....................................................................................................................... 62

Axel KAMALAK

http://axelkamalak.eu

3
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

PARTIE 1 - INSTALLER LIDE SALESFORCE DANS ECLIPSE INSTALLER LIDE

Aller dans Eclipse Cliquer sur Help Cliquer sur Eclipse Marketplace

Axel KAMALAK

http://axelkamalak.eu

4
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Dans le champ Find , entrer force.com et cliquer sur le bouton GO Une fois quEclipse vous propose lIde , cliquer sur le bouton Installer

Sous Eclipse Dans la zone de gauche, cliquer droit Cliquer sur New Cliquer sur Force.com project

Axel KAMALAK

http://axelkamalak.eu

5
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Il faudra remplir le formulaire de la manire suivante : Project name : le nom du projet (par exemple RBX_project_ABC ) Username : votre nom utilisateur Password : votre mot de passe Security token : votre jeton de scurit

Pour chaque environnement, il faudra utiliser un nom dutilisateur unique.

Pour lenvironnement de test, vous pouvez avoir le nom dutilisateur : john,.apexer@abc.com.sandbox

Pour lenvironnement de production, vous pouvez avoir le nom dutilisateur : john.apexer @abc.com

Sur un mme environnement, deux utilisateurs ne peuvent pas avoir le mme nom dutilisateur.

Il existe diffrents types denvironnement :

Axel KAMALAK

http://axelkamalak.eu

6
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Sandbox : cest un environnement de test, rserv aux dveloppeurs. Son adresse url est https://test.salesforce.com Production : cest un environnement de production : rserv aux utilisateurs : Son adresse url est https://login.salesforce.com

LE JETON DE SECURITE

Pour obtenir un jeton de scurit, il faudra aller sur votre environnement Salesforce. Cliquer sur Mes informations personnelles Cliquer sur Rinitialiser mon jeton de scurit Vous recevrez votre jeton par email.

Si vous vous connectez depuis un espace scuris, le jeton de scurit nest pas ncessaire. Pour cela ladministrateur doit renseigner une plage dadresses IP scurises sur le ou les profils.

PLAGES DE CONNEXION IP

Axel KAMALAK

http://axelkamalak.eu

7
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Dans le profil, ladministrateur saisit une plage dIP scurise.

Les utilisateurs rattach au profil et qui se connectent depuis une adresse ip compris dans cette plage nauront pas besoin de jeton de scurit.

Axel KAMALAK

http://axelkamalak.eu

8
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

PARTIE 2 - STRUCTURE DUN PROJET SALESFORCE

Classes : ce sont toutes les classes du projet Pages : ce sont les pages Visualforce Triggers : ce sont les dclencheurs Static ressources : ce sont les fichiers de Ressources ( js , css , image) . On charge sous Salesforce Salesforce.schma : on accde la base de donnes via une application graphique.

Axel KAMALAK

http://axelkamalak.eu

9
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

La cration des diffrents composants peut se faire via Eclipse Cliquer droit sur le nom du projet Cliquer sur New Cliquer sur le composant de votre choix

Pour supprimer un composant : Il faudra effectuer la suppression sous Salesforce. Il faudra raliser la mme action sous Eclipse.

Axel KAMALAK

http://axelkamalak.eu

10
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

PARTIE 3 DEPLOIEMENT DUN PROJET A PARTIR DECLIPSE

Il est possible de dployer sous Salesforce partir dEclipse. Slectionner les fichiers dployer Cliquer droit sur le fichier Cliquer sur force.com Cliquer sur Save to Server

Lorsque lon appuie sur Enregistrer, Eclipse envoie aussi automatiquement les modifications sous Salesforce.

Axel KAMALAK

http://axelkamalak.eu

11
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Dans le cas dun projet en quipe, le dveloppeur AB a dploy ses modifications. Le dveloppeur AF veut rcuprer les dernires modifications. Comment faire? Clic droit sur le nom du projet Cliquer sur force.com Cliquer sur Refresh from Server

Il est conseill de faire cette action chaque matin afin de rcuprer les modifications apportes par les autres collgues. Si un dveloppeur ne tlcharge pas la dernire version du fichier et veut enregistrer son fichier, Salesforce va lavertir.

Sauvegardez votre code dans un autre fichier Effectuez un rafrachissement partir du serveur pour rcuprer la dernire version du document (Refresh from Server) Insrez vos modifications dans le fichier Vous pouvez maintenant enregistrer.

Si vous souhaitez ignorer les modifications, vous avez la possibilit dcraser le fichier Clic droit sur le nom du fichier Cliquer sur force.com Cliquer sur Save to Server

Axel KAMALAK

http://axelkamalak.eu

12
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Il est possible de faire une livraison sur lenvironnement de production Clic droit sur le nom du projet Cliquer sur Force.com Cliquer sur Deploy to Server

Entrez vos informations Puis choisissez Production/ Developer Edition

Pour vrifier que vos modifications sont valides et peuvent tre dploys sous Salesforce : Cliquer sur Validate Deployment

Axel KAMALAK

http://axelkamalak.eu

13
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Salesforce vient de valider les Modifications. Cliquer sur Next pour dployer.

La ou les modifications sont maintenant dployes sur lenvironnement de production.

Axel KAMALAK

http://axelkamalak.eu

14
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

PARTIE 4 LES TRIGGERS


Un objet peut avoir des triggers : Apex Trigger : ce sont des dclencheurs qui vont gnrer une ou plusieurs mthodes aprs action de lutilisateur. Le trigger se dclenche avant ou aprs une action spcifique dun utilisateur sur un objet particulier

Les diffrents modes : After update : aprs la mise jour dun objet After insert : aprs insertion dun nouvel objet Before insert : avant linsertion dun nouvel objet Before update : avant la mise jour dun objet Before delete : avant la suppression dun objet After delete : aprs la suppression dun objet

Axel KAMALAK

http://axelkamalak.eu

15
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

MODE BEFORE OU MODE AFTER


Si je dois effectuer une action sur lobjet elle-mme, je dois obligatoirement choisir un trigger en mode before. Si je dois effectuer une action sur un autre objet, je dois choisir un trigger en mode after.

Par exemple, aprs saisie du salaire brut, le trigger doit calculer le salaire net et les charges sociales pour un collaborateur.

Laction du trigger doit intervenir sur lobjet lui-mme, donc je suis dans lobligation dutiliser un trigger en mode before. Jai besoin des informations avant la fin de lenregistrement. Aprs modification du salaire pour un collaborateur, Salesforce doit crer un nouvel Objet Historique Salaire .

Laction du trigger va intervenir sur un autre objet, donc je dois utiliser le mode after. Dans le second cas, si javais choisi un trigger en mode before. Nous pourrions avoir un problme si lobjet Collaborateur ne se crait pas.

Pour viter ce genre de problme, on doit prendre un trigger en mode after. Le trigger en mode after va agir une fois que lenregistrement de lobjet courant est termin. Si lobjet rencontre un problme lenregistrement, les actions du trigger after ninterviennent pas.

Rgle de nommage conseille pour un trigger :

TRG_NumroTriggerUnique_NomObjet_TypeAction

Par exemple, mon premier trigger after insert sur lobjet Account TRG_01_Account_beforeinsert Un trigger en exemple :

_af

Axel KAMALAK

http://axelkamalak.eu

16
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Un trigger doit comporter des appels des mthodes dautres classes. Ici, on appelle la mthode calculerSalaire de la classe AP01_Account

Un utilisateur saisit les informations suivantes dans la fiche compte : Nom : Durand Tlphone : 0101010101 Il appuie sur enregistrer. Le trigger va rcuprer ces informations dans un objet de type Account. Il va les transmettre la mthode calculerSalaire en utilisant trigger.new

Un trigger commence obligatoirement par le mot cl trigger Le nom du trigger arrive juste aprs Le nom de lobjet arrive aprs le mot cl on Dans les paramtres, on va spcifier le mode de trigger

Filtrer les enregistrements au niveau du trigger

trigger TR01_Rayon_beforeinsert on Rayon__c ( before insert) {

Axel KAMALAK

http://axelkamalak.eu

17
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

AP01Rayon.Traiterlesmanagers(trigger.new); }

Dans lexemple ci-dessus, nous appelons la mthode Traiterlesmanagers en lui fournissant en paramtre tous les rayons. Cependant, il faudrait filtrer les enregistrements qui doivent tre traits. Lexemple suivant nous explique comment filtrer les enregistrements au niveau du trigger. List<Rayon__c> mesRayons = new List<Rayon__c>(); for(Rayon__c eachRayon : trigger.new) { if( eachRayon.NbResponsable__c != null ) { mesRayons.add(eachRayon); } } if(!mesRayons.isEmpty()){ AP01Rayon.Traiterlesmanagers(mesRayons); }

Je vais cres une liste qui va contenir tous les rayons qui mintressent. Je vais parcourir tous les rayons traiter. Si le nom du responsable est rempli, je vais le placer dans la liste mesRayons

List<Rayon__c> mesRayons = new List<Rayon__c>(); for(Rayon__c eachRayon : trigger.new) { {

if( eachRayon.NbResponsable__c != null ) mesRayons.add(eachRayon); } }

Axel KAMALAK

http://axelkamalak.eu

18
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Si ma liste nest pas vide, je vais appeler la methode Traiterlesmanagers en lui fournissant en paramtre ma liste. if(!mesRayons.isEmpty()){ AP01Rayon.Traiterlesmanagers(mesRayons); }

Axel KAMALAK

http://axelkamalak.eu

19
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

PARTIE 5 LES CLASSES


Une classe va contenir toutes les mthodes et les variables. Il est fortement conseill dutiliser une convention de nommage. On vous conseille la suivante : AP[Numro unique de la classe]_Objet

Par exemple, la premire classe du projet pour lobjet Account sappellera : AP01_Account

Un exemple de classe :

Prive : la classe ne peut pas tre accessible par les autres classes et les dclencheurs. Salesforce refuse lenregistrement.

Axel KAMALAK

http://axelkamalak.eu

20
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

I.Public : accessible toutes les classes et dclencheurs du projet courant. II.Global : accessible par toutes les classes apex de tous les projets ( partout ) III.Virtual : la classe autorise lhritage et la surcharge. IV.Abstract : la classe dfinit des mthodes abstraites. V.Without sharing : indique que la classe ne respecte les rgles de partage de salesforce. VI.With sharing : indique que la classe respecte les rgles de partage de Salesforce.

LES METHODES ET LES ATTRIBUTS :


Les attributs se dclarent de la manire suivante : public String NomDuResponsable {get;set;} private Integer TotalChiffreAffaire {get;set;} public final Integer AgeMajorite = 18; Niveau Accessibilit Type Nom {get;set;}

Axel KAMALAK

http://axelkamalak.eu

21
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

{get; set;} : accessibilit lecture / criture Si vous ne mettez pas get/set , la variable ne pourra pas tre utilise.

LES METHODES SONT DECLAREES DE LA MANIERE SUIVANTE :

Accs type de retour nom (paramtre1, paramtre n){ return x ; }

Exemple de programme : Lors de la cration dun compte, on veut directement affecter 200 au champ Annual

Axel KAMALAK

http://axelkamalak.eu

22
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Axel KAMALAK

http://axelkamalak.eu

23
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

PARTIE 6 PROGRAMMATION APEX

Le langage Apex est un langage gouvern.

Les langages traditionnels sont trs flexible et peuvent demander au systme de faire laction x, y, z .. Le langage Apex est un langage gouvern o vous pouvez faire tout ce que le systme autorise.

Axel KAMALAK

http://axelkamalak.eu

24
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

LES TYPES DE VARIABLE

Il existe diffrents type de donnes sous APEX :

Integer : entier (-2,147,483,648 2,147,483,647 ) String : Chaine de caractre Boolean : true ou false Date : les dates Long Dcimal Double Blob : donnes binaire ID : identifiant Object : ce sont les objets Integer i = 50; String nomClient= TEST_APEX;

Axel KAMALAK

http://axelkamalak.eu

25
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

LES OPERATEURS

LES CONDITIONNELS :

Linstruction if permet de faire un test boolen. Si la condition est respecte, alors on va excuter une ou plusieurs actions

Axel KAMALAK

http://axelkamalak.eu

26
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Si la variable AnnualRevenue est positive alors on va lincrmenter. Linstruction if else permet de faire un test boolen. Si la condition est vraie, alors on va excuter une ou plusieurs actions. Sinon on va excuter dautres actions.

Si la variable AnnualRevenue est positive alors on va lincrmenter. Sinon on va linitialiser 0 ;

LES REPETITIVES :
Linstruction for permet de faire une action n fois.

Axel KAMALAK

http://axelkamalak.eu

27
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Il est possible de parcourir une liste sans avoir grer sa taille. Pour cela, il suffira dcrire la boucle for de la manire suivante.

Dans le code ci-dessous, on va rcuprer tous les comptes dont le champ lieu__c est gal Paris. Le rsultat de cette requte pourra tre plac dans une liste nomme mesAccounts

Ensuite, on va parcourir cette liste grce notre boucle for afin de placer 75 dans le champ CP__c.

Axel KAMALAK

http://axelkamalak.eu

28
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Account eachAccount : mesAccounts : Account est le type de lobjet que lon va manipuler. eachAccount est le nom de la variable que lon va utiliser pour parcourir chaque enregistrement mesAccounts est le nom de la liste que lon va parcourir

Linstruction do while permet de faire une action tant que la condition est respecte. Linstruction do-while excute au moins une fois la ou les instructions avant de tester la condition.

Important : Dans la boucle do, il ne faudra pas oublier dincrmenter la variable.

Axel KAMALAK

http://axelkamalak.eu

29
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

LES REPETITIVES :
Linstruction while permet de faire une ou plusieurs actions tant que lacondition est respecte.

LES COLLECTIONS
Une collection permet de stocker des lments de mme type.

Par exemple, une collection de collaborateurs peut contenir Pierre, Martin, Jean, Alexandra, ..

LES LISTES :
Le type List hrite de la collection. Une liste permet de stocker x lments de mme type. Elle peut avoir des doublons. Sa taille sadapte automatiquement.

Syntaxe : public List<Type> NomListes = new List<Type>();

Exemple :

Axel KAMALAK

http://axelkamalak.eu

30
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

list< Sportif__c > mesSportifs = new list< Sportif__c >(); mesSportifs= [Select Id,Name,FirstName__c ,Age__c from Sportif__c where Age__c >18];

SET
Une collection de type Set permet de stocker un ensemble dobjet de mme type. Elle refuse les doublons. Il nest pas possible de stocker le mme objet 2 fois contrairement une liste classique o on pourrait stocker le mme objet X fois.

Syntaxe: public Set<Type> SetName = new Set<Type>(); Les principales mthodes pour les collections

clear : effacer tout le contenu dune collection clone : retourner une copie de la collection isEmpty : retourner false si la liste nest pas vide . Sinon retourne true size : retourner la taille de la collection add : ajouter un lment dans la collection

MAP
Une map est une collection de paires cl valeurs. Chaque cl est unique pour une seule valeur. La cl et la valeur peuvent avoir diffrent type.

La map suivante reprsente le code et le nom des produits :

Cl Valeur

01tW0000000QTRv Informatique

01tW0000000VTRv Fruits et Lgumes

01tW0000000QTDv Boulangerie

Une map peut tre dclare de la manire suivante : map<Id, String> mapProduits = new map<Id, String>();

Axel KAMALAK

http://axelkamalak.eu

31
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Exemple dutilisation dune map :

Cette mthode va nous permettre de remplir le nom du rayon pour chaque produit.

public static void RemplirNameOfRayon (List<produitsAliementaires__c> ProduitsAlimentaires) { Set<Id> mesproduitsIds = new Set<Id>(); for(produitsAliementaires__c eachProduit : ProduitsAlimentaires) { mesproduitsIds.add(eachProduit.IdRayon); } map<Id,Rayon__c> mapRayons = new map<Id,Rayon__c>([Select Id,Name from Rayon__c where Id in: mesproduitsIds]); for(produitsAliementaires__c eachproduits : ProduitsAlimentaires) { eachproduits.NameRayon__c = mapRayons.get(eachproduits.IdRayon).Name ; } } Set<Id> mesproduitsIds = new Set<Id>(); for(produitsAliementaires__c eachProduit : ProduitsAlimentaires) { mesproduitsIds.add(eachProduit.IdRayon); }

Je vais parcourir la liste ProduitsAlimentaires afin dxtraire tous les identifiants de rayon dont je vais avoir besoin pour mes produits.

map<Id,Rayon__c> mapRayons = new map<Id,Rayon__c>([Select Id,Name from Rayon__c where Id in: mesproduitsIds]);

Axel KAMALAK

http://axelkamalak.eu

32
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Je vais rcuprer tous les enregistrements de type Rayon qui mintressent. Je ralises cette action par le biais de la clause where. Comme jai rcuprs les identifiants rayons dont javais besoin pour mes produis alimentaires.

for(produitsAliementaires__c eachproduits : ProduitsAlimentaires) { eachproduits.NameRayon__c = mapRayons.get(eachproduits.IdRayon).Name ; }

Je vais parcourir ma liste de produits par le biais de la boucle for. La ligne suivante va me permettre de rcuprer le nom du rayon dans la map. Je vais remplir le champ NameRayon__c de mon enregistrement.

LE LANGAGE SOQL

Il est similaire au langage SQL. Il permet de faire des oprations dans la base de donnes Salesforce. Insert : crer un nouvel enregistrement Update : mettre jour un enregistrement existant Upsert : Crer si inexistant sinon mettre jour lenregistrement Delete : Supprimer un enregistrement Il est possible de construire les requtes partir declipse :

Axel KAMALAK

http://axelkamalak.eu

33
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Lcran Salesforce schma dispose de 3 zones : Requte Zone daffichage des rsultats Objet

La construction dune requte se ralise de la manire suivante : Choisir lobjet Cliquer sur les champs souhaits

La requte est automatiquement affiche. Cliquer sur Run me pour voir les rsultats dans la zone daffichage des rsultats.

Axel KAMALAK

http://axelkamalak.eu

34
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Cette requte risque de ne pas marcher sous Apex : Select a.Phone, a.Name, a.Id From Account a

Il faudra supprimer les annotations a La requte devient :

Select Phone Name , Id From Account

SUPPRIMER UN ENREGISTREMENT

Axel KAMALAK

http://axelkamalak.eu

35
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

public static void SupprimerPlayerEtatSupprimer(List<Player__c> players) { List<Player__c> playersToDelete = new List<Player__c>(); for(Player__c eachplayers: players) { if(eachplayers.Etat__c == To be deleted ) { Player__c tempPlayer=new Player__c(id=eachplayers.id); playersToDelete.add(tempPlayer); }

delete playersToDelete; }

Si vous tentez de supprimer un enregistrement, Salesforce va refuser la suppression si celui ci se fait sur lenregistrement actif. Donc pour viter ce problme, il faudra crire le code suivant :

Player__c tempPlayer=new Player__c(id=eachplayers.id); playersToDelete.add(tempPlayer);

Ici on va crer un nouveau objet de type Player__c qui va recevoir le mme Id que notre enregistrement actif. On va placer cet objet dans une liste. A la fin de la mthode, on va supprimer tous les enregistrements.

LES LIMITES SALESFORCE

Axel KAMALAK

http://axelkamalak.eu

36
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Tout code Apex est confront un certain nombre de rgles. Si vous ne respectez pas ces rgles, votre code est invalide. Vous ne pourrez pas passer en production. Salesforce ne vous rpondra pas suite une action, il dira limite X non respecte.

Le code suivant prsente un default

for(Integer i=0 ; i<maListeContactnew.size() ; i++) { if(maListeContactnew[i].Phone != maListeContactold[i].Phone || maListeContactnew[i].Phone != null && maListeContactold[i].Phone ==null) { Contact c = new Contact(); c.Phone = maListeContactnew[i].Phone; c.LastName= maListeContactnew[i].Name; c.AccountId= maListeContactnew[i].Id;

insert c ;
} }

Salesforce limite le nombre de requte SOQL 100. Autrement dit, il ne faudra pas effectuer plus de 100 reqetes SOQL. Sinon Salesforce bloque lexcution. NB : Dans les environnements libres, la limite SOQL est 150. Pour rsoudre ce problme, il faudra effectuer les actions suivantes : On cre une liste de contact. On ajoute tous les contacts crer dans cette liste. On effectue linsertion de nos contacts la fin du traitement. Mme sil y a 20 000 contacts crer, Salesforce considre ce code comme 1 seul requte.

List<Contact> ContactToCreate = new List<Contact>();

Axel KAMALAK

http://axelkamalak.eu

37
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

for(Integer i=0 ; i<maListeContactnew.size() ; i++) {

if(maListeContactnew[i].Phone != maListeContactold[i].Phone || maListeContactnew[i].Phone != null && maListeContactold[i].Phone ==null) { Contact c = new Contact();

c.Phone = maListeContactnew[i].Phone; c.LastName= maListeContactnew[i].Name; c.AccountId= maListeContactnew[i].Id; ContactToCreate.add(c);

} } insert ContactToCreate ;

Axel KAMALAK

http://axelkamalak.eu

38
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

LES METHODES DE TEST

Il est possible dcrire les mthodes de test dans la classe. Pour une meilleure ergonomie et organisation, il est conseill de crer une nouvelle classe.

Convention de nommage conseille : TEST_NomDeLaClasse

Pour crer une classe de test,

Cliquer sur classes Cliquer sur new Cliquer sur Apex Class

Entrer le nom de la mthode de test Dans la liste de slection Template : Slectionner Test Class

Axel KAMALAK

http://axelkamalak.eu

39
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Une mthode de test reproduit le mme comportement quune ou plusieurs actions de lutilisateur.

Dans le code prcdent, la mthode createContact va crer un nouveau contact a chaque fois que le numro de tlphone dun compte va changer.

Pour valider ce code, nous devons crire ce cas. Ici nous testons la mise jour dun compte. Le code est valid.

Il est conseill de faire les tests avec plus de 100 donnes pour voir si notre code sera confront la limite SOQL 101

La mthode ci-dessous nous permet de valider notre code. Une autre mthode pour crire les mthodes de test consiste utiliser une classe factory.

Axel KAMALAK

http://axelkamalak.eu

40
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Nous allons crer une classe factory_test comme suit

Factory_Test.cls public static Account createAccount() { account acc = new Account(); acc.Name=TEST Account; acc.Phone=0150120000 return acc; } Public static Film__c createFilm() { Film__c film = new Film__c film.Name = LE HEROS DES TEST; film.Type__c =Animation ; film.Prix_du_ticket__c = 12 ; return film ; }

Account_Test
static testMethod void myAccountTest() { Account acc = Factory_Test.createAccount(); insert acc; Film__c film = Factory_Test.createFilm();

Insert film;

Il est possible dcrire toutes les tests mthodes dans une classe factory. Ainsi, il suffira de faire la mthode createAccount() pour crer un account. Cette mthode de dveloppement permet de centraliser la cration des objets. Ainsi lavenir si un champ devient obligatoire, il suffira de corriger la mthode de test dans la classe test_factory.

Axel KAMALAK

http://axelkamalak.eu

41
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

TAUX DE COUVERTURE DU CODE :


Pour mettre notre code en production, il nous faudra avoir 75% de couverture minimum.

Pour vrifier le taux de couverture du code actuel, il faudra effectuer la manipulation suivante :

Cliquer sur Setup Cliquer sur Develop Cliquer sur Apex Class

Pour mieux comprendre le rapport :

Axel KAMALAK

http://axelkamalak.eu

42
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Tests Run : nombre de test lancs Test failure : nombre derreurs Code Coverage : taux de couverture Test Success: liste les tests OK Code Coverage : Taux de couverture par classe et trigger

Axel KAMALAK

http://axelkamalak.eu

43
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

PARTIE 7 VISUALFORCE
Visualforce est un langage balis pour permettre la conception dapplications. Il est possible de crer des interfaces avec un style personnalis o bien avec le style salesforce. Chaque page Visualforce peut contenir jusqu 1Mo de texte, soit 1 million de caractre. Tous les pages Visualforce commencent avec le tag <apex:page>

ARCHITECTURE DUNE PAGE VISUALFORCE

1. Lutilisateur va consulter une page visualforce 2. La page visualforce appel les mthodes du contrleur 3. Les rsultats sont retourns la page visualforce 4. Lutilisateur peut consulter les rsultats sur la page visualforce

Axel KAMALAK

http://axelkamalak.eu

44
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

CONTENU DUNE PAGE VISUALFORCE

<apex:page > <!-- Ceci est un commentaire --> //Juste un texte de bienvenue <h1>Flicitations, vous venez de raliser votre 1re page. </h1> <p/> </apex:page> 1. Une page visualforce commence toujours par le tag <apex:page> et se termine par le tag </apex:page> 2. Un commentaire commence toujours avec <!-- et se termine par -- > 3. On peut mettre des commentaires de la manire suivante : <!-- Ceci est un commentaire --> 4. Une page Visualforce sobtient ladresse suivante : Adresse de lenvironnement + /apex/ + Nom de la page Visualforce 5. Pour la page VF01_PageBienvenue sur lenvironnement de test : on aura comme adresse : https://test.salesforce.com/apex/VF01_PageBienvenue

VOICI LE RESULTAT DAFFICHAGE DE MA PAGE :

Axel KAMALAK

http://axelkamalak.eu

45
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

GENERER UN PDF
Il est possible dafficher la page sous forme dun fichier pdf : Il suffit dutiliser le mot cl : RenderAs="PDF"

<apex:page RenderAs="PDF"> <!-- Ceci est un commentaire --> //Juste un texte de bienvenue <h1>Flicitations, vous venez de raliser votre 1re page. </h1> <p/> </apex:page>

DROIT PROFIL
Pour permettre un utilisateur de voir la page Visualforce, il faudra donner laccs son profil : Aller dans le profil Dans la partie Accs la page Visualforce Page activ et cliquer sur Modifier

Ajouter la page dans la liste des pages accessibles.

Axel KAMALAK

http://axelkamalak.eu

46
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

MODE DE DEVELOPPEMENT SOUS SALESFORCE

Il est possible de faire du dveloppement directement sous Salesforce. Pour cela, il faudra activer le mode dveloppeur dans la fiche profil de lutilisateur. 1- Cliquer sur Mes informations personnelles 2- Cliquer sur Informations personnelles 3- Cocher la case Mode de dveloppement

Axel KAMALAK

http://axelkamalak.eu

47
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

VOICI LE RESULTAT :

Licne situ droite permet dactiver loutil de dveloppement. Pour modifier votre code, il faudra cliquer sur la disquette. Tout enregistrement est dfinitif.

CREER UN OBJET PERSONNALISE

Nous allons crer un objet personnalis 1. Cliquer sur Crer 2. Cliquer sur Objets

Axel KAMALAK

http://axelkamalak.eu

48
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

3. Cliquer sur Nouvel objet personnalis

La cration des champs personnaliss se ralise au niveau de la section Champs personnaliss et rlations

CREER UN ONGLET POUR LOBJET PERSONNALISE


Il faudra cliquer sur Crer puis Onglet

Axel KAMALAK

http://axelkamalak.eu

49
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Dans la section Onglets de lobjet personnalis , il faudra cliquer sur Nouveau

Dans la liste de slection Objet, il faudra choisir votre objet. Puis il faudra choisir un style donglet. La description nest pas obligatoire mais plutt conseill.

Axel KAMALAK

http://axelkamalak.eu

50
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

LE CONTROLEUR PERSONNALISE

Un contrleur personnalis va nous permettre de programmer des actions personnalises. Sur la page visualforce, il faudra dclarer le contrleur standard et personnalis. Le contrleur standard se dclare avec le mot cl : Standardcontroller Le contrleur personnalis se dclare avec le mot cl : extensions <apex:page Standardcontroller="film__c" extensions="ControllerFilm"> </apex:page>

Important : Il ne faudra pas oublier de mentionner le contrleur standard. Si vous ne mentionnez pas le contrleur standard, alors vous ne pourrez pas utiliser votre page visualforce pour crer un onglet, surcharger une action , .

LE CONSTRUCTEUR

Dans le contrleur, il faudra avoir obligatoirement un constructeur. Ce constructeur aura pour argument le contrleur standard. Le constructeur sexcute au lancement de la page.

public class ControllerFilm{ private ApexPages.StandardController mycontroller; list<film__c> monfilm{get;set;} public ControllerFilm(ApexPages.StandardController controller) { mycontroller = controller; } }

AFFICHER UNE VARIABLE

Axel KAMALAK

http://axelkamalak.eu

51
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

public class ControllerFilm{ private ApexPages.StandardController mycontroller; list<film__c> monfilm{get;set;} public Integer i{get;set;} public ControllerFilm(ApexPages.StandardController controller) { mycontroller = controller; i=5; } }

Dans le contrleur, nous allons dfinir une valeur entire. Il ne faudra pas oublier de prciser get ;set ; public Integer i{get;set;}

Dans le constructeur, nous allons lui affecter une valeur soit 5. public ControllerFilm(ApexPages.StandardController controller) { mycontroller = controller; i=5; }

Sur la page visualforce, il faudra crire la commande suivante : <apex:page Standardcontroller="film__c" extensions="ControllerFilm"> Bienvenue au Cinema Axel Apex Formation<br/> Le nombre de film en vision aujourd'hui est : {!i} </apex:page>

VOICI LE RESULTAT DAFFICHAGE :

Axel KAMALAK

http://axelkamalak.eu

52
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

CREER UN TITRE DAFFICHAGE DANS LA PAGE VISUALFORCE

<apex:page Standardcontroller="film__c" extensions="ControllerFilm"> <fieldset> <legend>Bienvenue au Cinema Axel Apex Formation</legend> Le nombre de film en vision aujourd'hui est : {!i} </fieldset> </apex:page>

Le composant fieldset et legend permettent de faire un affichage avec un titre et un cadre au tour du contenu.

AFFICHER LES ENREGISTREMENTS EXISTANTS

Sur la page visualforce, il faudra ajouter plusieurs composants <apex:page Standardcontroller="film__c" extensions="ControllerFilm"> <apex:pageBlock >

Axel KAMALAK

http://axelkamalak.eu

53
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

<apex:pageBlockTable value="{!monfilm}" var="film"> <apex:column value="{!film.Name}"/> <apex:column value="{!film.Prix_du_ticket__c}"/> <apex:column value="{!film.Type__c}"/> <apex:column value="{!film.Date_de_sortie__c}"/> <apex:column value="{!film.Nombre_de_jours_restant_en_vision__c}"/> <apex:column value="{!film.is3D__c}"/> </apex:pageBlockTable> </apex:pageBlock> </apex:page>

<apex:pageBlockTable value="{!monfilm}" var="film"> : ce composant permet de traiter le contenu de la liste monfilm. Pour chaque lment de la liste monfilm, on utilisera la variable film. Le composant apex :pageBlock doit obligatoirement tre mentionn avant le composant apex :pageBlock.

Le composant <apex :column> permet de choisir lattribut afficher. Par exemple, { !film.Name} permet dafficher le nom du film.

Pour afficher les enregistrements sur la page visualforce, il est fortement conseill dutiliser les composants standards Visualforce. Ainsi vous naurez pas besoin dcrire les feuilles de style css.

LIRE LES ENREGISTREMENTS

Sur le contrleur, il faudra crer une mthode qui va rcuprer les enregistrements partir de la base de donnes. public class ControllerFilm{ private ApexPages.StandardController mycontroller; public list<film__c> monfilm{get;set;}

Axel KAMALAK

http://axelkamalak.eu

54
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

public ControllerFilm(ApexPages.StandardController controller) { mycontroller = controller; monfilm = RetournerListeFilm(); } public list<film__c> RetournerListeFilm(){ return [Select Name,Prix_du_ticket__c,Type__c,Nombre_de_jours_restant_en_vision__c, Date_de_sortie__c, is3D__c from film__c ]; } }

VOICI LE RESULTAT DAFFICHAGE

Nous venons de voir que le composant <apex :column> nous a permis dafficher les enregistrements. Nous allons voir dautres types de composant dans la suite du tutoriel.

LE MODE EDIT
Lexemple suivant va nous permettre de consulter, modifier et crer des enregistrements.

Axel KAMALAK

http://axelkamalak.eu

55
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

SUR LA PAGE VISUALFORCE

<apex:page Standardcontroller="film__c" extensions="ControllerFilm"> <apex:form > <apex:commandButton action="{!changeEditMode}" value="edit" rendered="{!!isEditMode}" /> <apex:commandButton action="{!cancelEdit}" value="cancel" rendered="{!isEditMode}"/> <apex:commandButton action="{!saveFilm}" value="Save" rendered="{!isEditMode}"/> <apex:commandButton action="{!createFilm}" value="Create" rendered="{!!isEditMode}"/> <apex:pageBlock > <apex:pageBlockSection columns="3" title="Liste des films" > <apex:repeat value="{!monfilm}" var="film"> <apex:inputField value="{!film.Name}" rendered="{!isEditMode}" /> <apex:outputField value="{!film.Name}" rendered="{!!isEditMode}" /> <apex:inputField value="{!film.Prix_du_ticket__c}" rendered="{!isEditMode}" /> <apex:outputField value="{!film.Prix_du_ticket__c}" rendered="{!!isEditMode}" /> <apex:inputField value="{!film.Type__c}" rendered="{!isEditMode}" /> <apex:outputField value="{!film.Type__c}" rendered="{!!isEditMode}" /> </apex:repeat> </apex:pageBlockSection> </apex:pageBlock> </apex:form> </apex:page>

< apex:pageBlockSection columns="3" title="Liste des films"> : permet de spcifier une page en 3 colonnes avec un titre. <apex:repeat value="{!monfilm}" var="film"> on va lire le contenu de la liste nomme monfilm. La variable de lecture de la liste sappelle film. Cest--dire, on va automatiquement accder chaque lment avec la variable film.

Axel KAMALAK

http://axelkamalak.eu

56
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

<apex:inputField value="{!film.Name}" rendered="{!isEditMode}" /> <apex:outputField value="{!film.Name}" rendered="{!!isEditMode}" />

Le composant apex:inputField : lutilisateur pourra modifier le contenu de la variable Name du film. Ce composant saffichera en mode edit uniquement. rendered="{!isEditMode}" permet de spcifier le mode daffichage. Le composant apex :outputField permet dafficher le contenu de la variable Name du film. Il saffichera en mode lecture. rendered="{!!isEditMode}" permet de spcifier laffichage en mode lecture. <apex:commandButton action="{!changeEditMode}" value="edit" rendered="{!!isEditMode}" /> Le bouton edit saffichera en mode lecture. Il va appeler la mthode changeEditMode. <apex:commandButton action="{!createFilm}" value="Create" rendered="{!!isEditMode}"/> Le bouton Create saffichera en mode lecture. Il va appeler la mthode createFilm.

<apex:commandButton action="{!cancelEdit}" value="cancel" rendered="{!isEditMode}"/> Le bouton cancel saffichera en mode edit Il va appeler la mthode cancelEdit. <apex:commandButton action="{!saveFilm}" value="Save" rendered="{!isEditMode}"/> Le bouton Save saffichera en mode edit. Il va appeler la mthode saveFilm.

Axel KAMALAK

http://axelkamalak.eu

57
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

LE CONTRLEUR

public class ControllerFilm{ public list<film__c> monfilm{get;set;} public ControllerFilm(ApexPages.StandardController controller) { monfilm = RetournerListeFilm(); } public list<film__c> RetournerListeFilm() { return [Select Name,Prix_du_ticket__c,Type__c,Nombre_de_jours_restant_en_vision__c, Date_de_sortie__c, is3D__c from film__c ORDER BY Name ASC ]; } public boolean isEditMode { get { if (isEditMode == null){ isEditMode = false; } return isEditMode; } set; } public PageReference createFilm() { isEditMode = true; film__c f = new film__c(); monfilm.clear(); monfilm.add(f); return null; } public PageReference changeEditMode() { isEditMode = true; return null; } public PageReference saveFilm() { isEditMode = false; upsert monfilm; monfilm = RetournerListeFilm(); return null; } public PageReference cancelEdit() { isEditMode = false; monfilm = RetournerListeFilm(); return null; }}

Axel KAMALAK

http://axelkamalak.eu

58
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

CHANGER LE MODE DEDITION

public boolean isEditMode { get { if (isEditMode == null){ isEditMode = false; } return isEditMode; } set; }

Nous aurons une variable boolean qui aura une valeur true o false public PageReference changeEditMode() { isEditMode = true; return null; }

Lorsque lutilisateur appuie sur le bouton edit , la mthode changeEditMode va tre excute. Ainsi, la variable isEditMode va recevoir la valeur true.

LE BOUTON CANCEL

public PageReference cancelEdit() { isEditMode = false; monfilm = RetournerListeFilm(); return null; }

Lorsque lutilisateur va appuyer sur le bouton cancel, la mthode cancelEdit va tre excute. Ainsi, la variable isEditMode va recevoir la valeur false. La liste sera rafraichit et le mode lecture seule sera affich.

Axel KAMALAK

http://axelkamalak.eu

59
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

LE BOUTON SAVE

public PageReference saveFilm() { isEditMode = false; upsert monfilm; monfilm = RetournerListeFilm(); return null; }

Lorsque lutilisateur va appuyer sur le bouton save, la mthode saveFilm va tre excute. Ainsi, la variable isEditMode va recevoir la valeur False.

AFFICHER LES COMPOSANTS


<apex:commandButton action="{!saveFilm}" value="Save" rendered="{!isEditMode}"/> Le bouton Save saffichera en mode edit. Il va appeler la mthode saveFilm. Le mot cl rendered permet dafficher le composant sur la page. Ici { !isEditMode} permet dafficher le composant en mode edit. Pour afficher le composant en mode lecture seule, il faudra spcifier rendered="{ !!isEditMode}"/>

CREER UN ENREGISTREMENT

La cration dun nouvel enregistrement se ralise par le biais du bouton create .

Axel KAMALAK

http://axelkamalak.eu

60
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Si lutilisateur appuie sur le bouton create, la mthode CreateFilm va sexcuter.

public PageReference createFilm() { isEditMode = true; film__c f = new film__c(); monfilm.clear(); monfilm.add(f); return null; }

isEditMode = true; // on passe en mode edit film__c f = new film__c(); // on va crer un nouveau film monfilm.clear(); // on vide le contenu de la liste daffichage monfilm.add(f); // on ajoute le nouveau lment la liste daffichage

SAUVER LENREGISTREMENT COURANT


A lappui du bouton save, la mthode saveFilm va sexcuter public PageReference saveFilm() { isEditMode = false; upsert monfilm; monfilm = RetournerListeFilm(); return null; }

isEditMode = false // on passe en mode lecture seule upsert monfilm : // on va effectuer linsertion o la mise jour en base de donne monfilm = RetournerListeFilm // on va rafraichir la liste daffichage.

Axel KAMALAK

http://axelkamalak.eu

61
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

ANNULER LA MODIFICATION
A lappuie sur le bouton cancel, on va excuter la mthode cancelEdit public PageReference cancelEdit() { isEditMode = false; monfilm = RetournerListeFilm(); return null; }

isEditMode : on passe en mode lecture seule monfilm = RetournerListeFilm : on va rafaichir la liste daffichage.

Axel KAMALAK

http://axelkamalak.eu

62
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Nous avons affich tous les enregistrements sous forme de tableau. Nous allons maintenant voir comment paginer dun lment lautre.

PAGINATION AVEC BOUTON NEXT ET PREV

public class ControllerFilm{ public list<film__c> monfilm{get;set;} public Integer indexDepart {get;set;} public Integer indexFin{get;set;} public ControllerFilm(ApexPages.StandardController controller) { monfilm = RetournerListeFilm(); indexDepart=0; indexFin=monfilm.size(); }

Il faudra crer deux variables pour lindex de dpart et index de fin. Une liste peut tre parcourue par le biais dun index. indexDepart aura comme valeur 0. Ainsi, nous afficherons le premier lment. indexFin aura comme valeur lindex du dernier lment de la liste. Ainsi taille-1.

Axel KAMALAK

http://axelkamalak.eu

63
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Il va falloir crer 2 mthodes pour le bouton Next et Previous

public PageReference next() { isEditMode = false; //si on est pas sur le dernier lment if(indexDepart<indexFin-1) { indexDepart++; // on va incrmenter } else indexDepart=0; // sinon on va revenir au premier lment return null; }

public PageReference prev() { isEditMode = false; //si on nest pas sur le dernier element, on va dcrmenter if(indexDepart>0) { indexDepart--; } else indexDepart=indexFin-1; // sinon on va revenir sur le dernier lment return null; } public PageReference saveFilm() { isEditMode = false; upsert monfilm; monfilm = RetournerListeFilm(); indexFin=monfilm.size(); return null; }

Dans la mthode SaveFilm, il faudra mettre jour la valeur de la variable indexFin aprs rafraichisssement de la liste.

public PageReference createFilm() { isEditMode = true; indexDepart=0; film__c f = new film__c(); monfilm.clear(); monfilm.add(f);

Axel KAMALAK

http://axelkamalak.eu

64
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

return null; }

Dans la mthode createFilm, il faudra se positionner au dbut de la liste pour crer le nouvel lment. Ainsi, nous nallons pas craser les autres lments.

Sur la page Visualforce, il faudra faire quelques modifications.


<apex:pageBlock > <apex:pageBlockSection columns="1" collapsible="false" title="Liste des films" > <apex:inputField value="{!monfilm[indexDepart].Name}" rendered="{!isEditMode}" /> <apex:outputField value="{!monfilm[indexDepart].Name}" rendered="{!!isEditMode}" /> <apex:inputField value="{!monfilm[indexDepart].Prix_du_ticket__c}" rendered="{!isEditMode}" /> <apex:outputField value="{!monfilm[indexDepart].Prix_du_ticket__c}" rendered="{!!isEditMode}" /> <apex:inputField value="{!monfilm[indexDepart].Type__c}" rendered="{!isEditMode}" /> <apex:outputField value="{!monfilm[indexDepart].Type__c}" rendered="{!!isEditMode}" /> </apex:pageBlockSection> </apex:pageBlock>

Nous allons supprimer le composant <apex :repeat>. Nous allons changer le champ value pour chaque composant : value="{!monfilm[indexDepart].Name}"

Ajouter les deux boutons


<apex:commandButton action="{!prev}" value="Previous" rendered="{!!isEditMode}"/> <apex:commandButton action="{!next}" value="Next" rendered="{!!isEditMode}"/>

Axel KAMALAK

http://axelkamalak.eu

65
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Axel KAMALAK

http://axelkamalak.eu

66
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

PARTIE 8 LE DATALOADER

Le Dataloader est une application Client que Salesforce propose pour permettre la manipulation des donnes. Vous pouvez importer, exporter, supprimer ou bien mettre jour vos donnes par le biais des fichiers CSV.

Le DataLoader peut tre utilis en deux modes : Le mode graphique Le mode ligne de commande

Il est possible de manipuler jusqu 5 millions denregistrement avec le dataloader pour les objets standards et personnaliss. A la fin de chaque excution, Il permet davoir un rapport. Le fichier success.csv va contenir tous les enregistrements dont lexcution sest bien droule. Le fichier error.csv va contenir tous les enregistrements dont lexcution a caus une erreur. De plus, le motif de lerreur sera plac dans ce fichier.

Pour tlcharger le dataloader : Cliquer sur Setup Cliquer sur Data Management Cliquer sur DataLoader

Axel KAMALAK

http://axelkamalak.eu

67
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Axel KAMALAK

http://axelkamalak.eu

68
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Cliquer sur DownLoad the DataLoader Lancer le DataLoader Cliquer sur Settings puis Settings

Au niveau du Server host, Indiquer ladresse de lenvironnement Pour une sandbox, on crira https://test.salesforce.com Pour un environnement de production, on crira https://login.salesforce.com

Use European date format : si vous cochez cette case, le fichier csv pourra contenir des dates sous format europen. Cest--dire dd/mm/yyyy Batch size : Cest le nombre de ligne que Salesforce envoie la fois. Salesforce recommande une valeur entre 50 et 100. Le maximum que vous pouvez entrer est 200.

Axel KAMALAK

http://axelkamalak.eu

69
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Si vous utilisez le mode if the Use Bulk API option is selected. , la valeur maximum est 10000. Dans le mode bulk, si une ligne est rejete lors du chargement, alors aucune ligne ne sera enregistre.

Proxy host : cest ladresse du server de votre proxy si un proxy existe. Proxy port : cest le port du proxy Proxy username : le nom dutilisateur pour lauthentification au niveau du proxy Proxy password : le mot de passe de lutilisateur pour lauthentification au niveau du proxy. Start at row : pour faire dmarrer le dataloader une ligne prcise. Pour le timeZone : Europe/Paris Aprs importation des dates dans Salesforce, vous pouvez constater que les dates affiches dans Salesforce et votre fichier csv ne sont pas conforme. Autrement dit, dans votre fichier csv vous avez indiqu 23 avril 2012 pour la date de facture. Salesforce affiche 22 avril 2012. Pour corriger ce problme, il faudra placer Havai au niveau du timeZone.

Avant de faire les oprations, il faudra sauthentifier

Axel KAMALAK

http://axelkamalak.eu

70
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Username : il faudra indiquer le nom dutilisateur Password : il faudra indiquer le mot de passe. Si vous devez saisir un jeton de scurit, il faudra le placer la suite de votre mot de passe.

Chaque bouton permet de faire une action spcifique.

Insert : insertion des enregistrements via un fichier csv Update : mettre jour les enregistrements via un fichier csv Upsert : mettre jour les enregistrements si existant sinon insertion de lenregistrement Delete : supprimer les enregistrements.

Axel KAMALAK

http://axelkamalak.eu

71
Axel KAMALAK __________________________________________________________________________________ Salesforce tutoriel

Export : exporter les enregistrements sous forme dun fichier csv. Export All : exporter tous les enregistrements.

Axel KAMALAK

http://axelkamalak.eu