0

タイプやステータスに関係なく、各連絡先のアクティビティ数のフィールド。完全な詳細: 要件は、連絡先、アカウント、または商談に基づいてレポートを作成し、連絡先、アカウント、または商談のいずれかに関連付けられたアクティビティの合計数の「概要」フィールドを表示できることです。活動ごとに 1 行を表示するのではなく、連絡先、案件、または取引先ごとに 1 行で活動の概要カウントを表示する必要があることに注意してください。注: 元の要求には、レポートに一意のアクティビティ数を含める機能も含まれていました

4

1 に答える 1

0

私はこのコードをテストしていませんが、挿入のためにこのようなことを行うことができます (更新と削除もカバーする必要があります)。この例では、NumberOfActivites__c が Contact オブジェクトのカスタム ToDo カウント フィールドです。

Map<Id,Integer> countMap = new Map<Id,Integer>();
List<Contact> contactList = new List<Contact>();

for (Task t : trigger.new){
    //get id's of all contacts affected by the batch
    Id w = t.whoId;
    if (w.getSObjectType().getDescribe().getName() == 'Contact'){
        //since there could be more than one task related to a contact 
        //in a batch, you would have to count them
        if (countMap.keyset().containts(w)){
            countMap.get(w) += 1;
        } else {
            countMap.put(w,1);
        }
    }
}

//get list of contacts to be updated
contactList = [Select Id, NumberOfActivities__c
               From Contact
               Where Id In :countMap.keyset()];

//modify contacts in list with new count
for (Contact c : contactList){
    c.NumberOfActivites__c = c.NumberOfActivites__c + countMap.get(c.Id));
}

//do the update
update contactList;
于 2016-03-22T03:42:06.417 に答える