我有一个应用程序通过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的代码的问题。
答案 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
是否为空,如果是,则给出用户的名称。