如何在Lead自定义公式字段中获取潜在客户的名称?

时间:2010-04-15 23:06:15

标签: salesforce

我有一个应用程序通过API从Salesforce读取Lead记录,我想将Lead Owner字段链接到应用程序中的属性。 “所有者”字段不在可用字段列表中,但所有自定义字段都在。

因此,我首次尝试解决方案是创建一个显示主管所有者名称的自定义字段。在SF公式编辑器中,据我所知,它不显示实际的数据字段,而是显示ID字符串。在我需要的环境中,这是毫无意义的。

alt text http://skinny.fire-storm.net/forposting/insertfield.JPG

有没有办法可以获取ID字符串引用的对象中的数据?

alt text http://skinny.fire-storm.net/forposting/havewant.JPG

我有RED BOX但需要GREEN BOX。

编辑:我无法更改调用API的应用程序代码。我只能改变销售人员。因此,这更像是一个salesforce超级用户/公式编写者问题,而不是编写调用SF API的代码的问题。

3 个答案:

答案 0 :(得分:5)

Salesforce允许通过他们称之为relationship queries的内容访问相关数据。您可以像下面这样指定查询,而不是加入:

System.debug([SELECT Owner.Name FROM Lead WHERE Id ='00QS00000037lvv']。Owner.Name);

尝试在系统日志中运行它,只需将引导ID替换为您正在查看的引导ID。

通过API访问数据时,原理是相同的,您的代理对象应该允许您访问Lead.Owner.Name。

编辑:

我同意eyecream,因为您无法更改应用程序代码,创建Apex触发器将是最佳方式。这里有一些代码可以帮助您入门:

trigger Lead_UpdateOwner on Lead(before insert, before update)
{
    Map<Id, String> ownerMap = new Map<Id, String>();
    for (Lead lead : Trigger.new)
    {
        ownerMap.put(lead.OwnerId, null);
    }

    if (ownerMap.size() > 0)
    {
        for (User[] users : [SELECT Id, Name FROM User WHERE Id IN :ownerMap.keySet()])
        {
            for (Integer i=0; i<users.size(); i++)
            {
                ownerMap.put(users[i].Id, users[i].Name);
            }
        }
        for (Lead lead : Trigger.new)
        {
            lead.OwnerName__c = ownerMap.get(lead.OwnerId);
        }
    }
}

lead.OwnerName__c需要是将保留所有者名称的主导对象上的自定义字段的名称。输入文字,长度121。

答案 1 :(得分:2)

VLOOKUP函数将是一个不错的尝试,但

  • 仅在验证规则中可用,而不在字段定义中
  • 它只能用于自定义对象,而您需要来自用户
  • 的数据

我说你需要从你的申请中查询

SELECT Owner.FirstName, Owner.LastName FROM Lead

除此之外......某些“插入后,更新后”触发器会在所有者更改时填充您的自定义字段?

答案 2 :(得分:1)

只是为了完整性而张贴(以及Google搜索):问题出现在任何可以排队的对象上,而不仅仅是Lead,因为它的来源是所有者可以引用用户(像往常一样)或队列对象。

这可以使用公式字段而不是触发器来解决,如下所示:

BLANKVALUE(Owner:Queue.QueueName, Owner:User.FirstName & " " & Owner:User.LastName)

基本上,公式中的BLANKVALUE函数检查owner.queuename是否为空,如果是,则给出用户的名称。