【问题标题】:SalesForce: Linking an custom field and account activity data销售队伍:链接自定义字段和帐户活动数据
【发布时间】:2011-10-28 14:39:43
【问题描述】:

我正在慢慢掌握 salesforce 的窍门,我正在尝试将一些字段连接到客户和机会等等。

我当前的问题是帐户活动详细信息。我有一组帐户,其中显示与该帐户相关的数据和详细信息,例如:

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

在此帐户中,我们有一个活动提要,其中提供了链接到该帐户的电话、会议或电子邮件的详细信息。帐户活动中的每个事件都有一个 Type 字段,可以是:会议、电话或电子邮件。

我要做的是在主帐户中创建一个自定义字段,该字段查看帐户活动,并显示上次会议的日期,因此就 sudo 代码而言,它将类似于:

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

或者类似的东西(我知道这基本上是 SQL)。

如果有人能帮上忙,那就太好了,特别是下午 5 点之前,因为我的老板说如果我弄明白了他会给我买一品脱!

谢谢大家。

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

我正在尝试这样的事情:

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

在创建自定义公式字段时,我尝试通过以下方式访问名为 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

【问题讨论】:

  • 我认为没有办法只通过一个自定义公式字段来做到这一点。您将需要一些代码,特别是 Event 对象上的 Trigger,它在插入或更新 Event 时写入 Account 上的自定义字段(例如 Last_Event_Type__c)。使用该自定义字段,您可以在尝试时进行公式比较。比如:CASE(TEXT(Last_Event_Type__c), Meeting, TODAY - LastActivityDate)
  • 感谢@MatthewKeefe,那么我应该把这样的代码放在哪里,它会放在帐户中的自定义公式字段中还是放在事件中?
  • @MatthewKeefe 我刚刚尝试了您的代码,但它无法将 Last_Event_Type__cLast_Event_Type 识别为有效。还有其他想法吗?
  • Last_Event_Type__c 应该是自定义(文本)字段,您需要创建它。
  • 是的,在我今天玩的时候,我试过了,但仍然没有运气,我现在正在尝试各种方法,但都失败了!哈

标签: field salesforce relationship custom-fields


【解决方案1】:

您不能用公式来做到这一点,也不能真正使用 LastActivityDate 字段,因为它跟踪所有类型的事件,而不仅仅是“会议”。

实现此目的的一种方法是在 Event 对象上创建插入后/更新后触发器,这将更新 Account 上的“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;
        }
    }
}

我没有尝试部署它,所以不确定它是否会要求您增加此触发器的代码覆盖率。您可能需要为它创建一个测试类。

【讨论】:

    猜你喜欢
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多