2011-10-28 43 views
1

我正在慢慢获得销售人员的hang and,我试图获得一些连接帐户和机会以及更多的字段。SalesForce:链接自定义字段和帐户活动数据

我目前的问题是与帐户活动的详细信息。我有一组数据显示和细节,例如连接到该帐户的帐户:

帐户所有者 帐户名称 类型 网站 电话号码 更多...

在此帐户,我们有一个提供与该账户相关的电话,会议或电子邮件的详细信息。帐户活动中的每个事件都有一个Type字段,可以是:会议,电话或电子邮件。

我所试图做的是着眼于帐户活动的主帐户中创建自定义字段,并显示最后一次会议的日期,所以在须藤代码方面,它会是这样的:

SELECT DueDate WHERE type=Meeting and DueDate <= TODAY()

或沿着这些线(我知道这基本上是SQL)。

如果任何人都可以提供帮助,那将会非常出色,特别是在下午5点之前,因为我的老板说如果我弄明白他会给我买一罐酒!

谢谢大家。

---------- ---------编辑

我想是这样的:

CASE(TEXT(Activity.Type), 会议今天 - LastActivityDate)

创建的是定制公式字段时,所以我试着做去所谓的事件类型字段

Activity.Type

钍是行不通的,但它是从LastActivityDate采取的猜测。我可能会全力以赴,所以任何事情都会有所帮助。干杯!

---------- ---------编辑

This is an image of the field that I am trying to access, I cannot seem to find any way to accessing this Type field

+0

我不认为有一种方法可以通过一个自定义公式字段来做到这一点。您需要一些代码,特别是事件对象上的触发器,无论何时插入或更新事件,它都会写入帐户上的自定义字段(例如Last_Event_Type__c)。使用该自定义字段,您可以在尝试时进行公式比较。 类似于: 'CASE(TEXT(Last_Event_Type__c),Meeting,TODAY - LastActivityDate)' –

+0

感谢@MatthewKeefe,我会在哪里放这样的代码,它会在帐户中的自定义公式字段中或事件? – lukehillonline

+0

@MatthewKeefe我刚刚试过你的代码,它不认为'Last_Event_Type__c'或'Last_Event_Type'有效。任何其他想法? – lukehillonline

回答

0

你不能做到这一点与一个公式,你不能真正使用LastActivityDate场,因为它跟踪所有类型的事件,而不仅仅是“会议”。

完成此操作的一种方法是在Event对象上创建一个after-insert/after-update触发器,它将更新帐户上的“Last_Meeting_Date__c”字段(您需要创建该字段)。

下面是代码:

trigger EventUpdateAccountMeetingDate on Event (after insert, after update) { 
     Map<String,Date> acctToDate = new Map<String,Date>(); 
    for(Event e : Trigger.new){ 
     if(e.Type=='Meeting' && e.AccountId!=null && (!acctToDate.containsKey(e.AccountId) || acctToDate.get(e.AccountId) < e.activityDate)){ 
       acctToDate.put(e.accountId, e.activityDate); 
     } 
    } 
    if(acctToDate.size()>0){ 
     List<Account> accts = [select id, Last_Meeting_Date__c from Account where id in :acctToDate.keyset()]; 
     List<Account> acctsToUpdate = new List<Account>(); 
     for(Account a : accts){ 
      if(a.Last_Meeting_Date__c==null || a.Last_Meeting_Date__c<acctToDate.get(a.id)){ 
       a.Last_Meeting_Date__c = acctToDate.get(a.id); 
       acctsToUpdate.add(a); 
      } 
     } 
     if(acctsToUpdate.size()>0){ 
      update acctsToUpdate; 
     } 
    } 
} 

我没有尝试部署它,所以不知道它会问你要增加代码覆盖率此触发器。你可能需要为它创建一个测试类。

相关问题