2012-11-19 1 views
2

Je voudrais mesurer le temps qu'il faut à un représentant pour ouvrir une nouvelle piste, mais ne peut pas comprendre comment exécuter un rapport en utilisant le composant heure de l'horodatage dans l'objet Historique des pistes. Je peux voir le moment où je fais un simple "show lead history" mais je n'arrive pas à comprendre comment exécuter un rapport dans ce champ.Comment faire des rapports sur l'historique des prospects dans Salesforce?

Merci

Tom

Répondre

0

Je ne pense pas que vous pouvez facilement faire rapport sur ce:/J'adorerait à prouver que mal.

Lorsque vous n'avez qu'un marteau, tout ressemble à un clou, hein?

Vous pouvez obtenir le jour de l'ouverture dans le rapport, mais pas vraiment "secondes entre l'ouverture et la création de plomb". J'ai vérifié et il semble que vous ne pouvez même pas tricher en créant un flux de travail qui se déclencherait en marquant le plomb comme ouvert.

sample lead history report


Si vous êtes bien avec l'exportation des détails du rapport similaire à Excel et la construction des formules là, je vous recommande cette route. Si cela doit vraiment être 100% dans Salesforce - avez-vous déjà utilisé Apex et Visualforce? Vous pouvez écrire un déclencheur sur Leads qui détecterait l'ouverture de lead et écrire la différence de temps dans un champ personnalisé.

Ou vous pouvez créer une page VF pour laquelle le code similaire à ceci serait une source de données. Pour mes données, il délivre en sortie

En moyenne, il a fallu 160917287 secondes pour l'utilisateur 005 ... pour ouvrir 2 conduit.

(Je sais qu'il est un grand nombre, ils sont à partir de 2007).

Map<Id, Long> timeCounter = new Map<Id, Long>(); // Counter how much time has passed between lead creation and opening of the record for each lead owner 
Map<Id, Integer> leadCounter = new Map<Id, Integer>(); // counter how many were actually opened 

for(LeadHistory lh : [SELECT CreatedDate, OldValue, NewValue, Lead.Name, Lead.OwnerId, Lead.CreatedDate 
    FROM LeadHistory 
    WHERE Field = 'IsUnreadByOwner' AND Lead.isUnreadByOwner = false 
    ORDER BY Lead.OwnerId 
    LIMIT 1000]){ 

    Long timeInSeconds = (lh.CreatedDate.getTime() - lh.Lead.CreatedDate.getTime())/1000; 
    Long totalTimeCount = timeCounter.get(lh.Lead.OwnerId); 
    Integer totalLeadCount = leadCounter.get(lh.Lead.OwnerId); 
    if(totalTimeCount == null){ 
     totalTimeCount = timeInSeconds; 
     totalLeadCount = 1; 
    } else { 
     totalTimeCount += timeInSeconds; 
     totalLeadCount += 1; 
    } 
    timeCounter.put(lh.Lead.OwnerId, totalTimeCount); 
    leadCounter.put(lh.Lead.OwnerId, totalLeadCount); 
} 

for(Id userId : timeCounter.keyset()){ 
    Decimal avg = timeCounter.get(userId)/leadCounter.get(userId); 
    System.debug('On average it took ' + avg + ' seconds to for user ' + userId + ' to open ' + leadCounter.get(userId) + ' leads.'); 
} 
Questions connexes