我有一个通过API从Salesforce读取销售线索记录的应用程序,我想将Lead Owner字段链接到应用程序中的一个属性。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
我有红色的盒子,但需要绿色的盒子。
编辑:我不能更改调用API的应用程序代码。我只能改变salesforce。因此,这更像是一个salesforce超级用户/公式编写者的问题,而不是一个关于编写调用SF的代码的问题。
发布于 2010-04-16 08:20:44
Salesforce允许通过他们所谓的relationship queries访问相关数据。您可以按如下方式指定查询,而不是连接:
System.debug(SELECT Owner.Name FROM Lead WHERE Id = '00QS00000037lvv'.Owner.Name);
尝试在系统日志中运行它,只需将销售线索ID替换为您正在查看的ID。
当通过API访问数据时,原理是相同的,您的代理对象应该允许您访问Lead.Owner.Name。
编辑:
我同意eyescream的观点,因为您不能更改应用程序代码,因此创建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需要是包含所有者名称的lead对象上的自定义字段的名称。键入Text,长度121。
发布于 2012-11-20 03:27:48
我也有类似的问题,但我希望所有当前和未来的用户字段都可用。由于用户的自定义查找字段不受公式字段的限制,因此我在Opportunity和Account对象上创建了一个名为OwnerLookup的字段,然后在创建或编辑时使用触发器填充该字段。例如,机会触发器是这样的:
trigger OpportunityTrigger on Opportunity (before insert, after insert, before update, after update) {
if(trigger.isBefore && trigger.isInsert) {
OpportunityTriggerHandler.newOpportunity(Trigger.old, Trigger.new);
}
else if(trigger.isAfter && trigger.isInsert){
//OpportunityTriggerHandler.futureUse(Trigger.new);
}
else if(trigger.isBefore && trigger.isUpdate){
OpportunityTriggerHandler.updateOpportunity(Trigger.new, Trigger.oldMap);
}
else if(trigger.isAfter && trigger.isUpdate){
//OpportunityTriggerHandler.futureUse(Trigger.new, Trigger.oldMap);
}
}而OpportunityTriggerHandler类(Apex代码)是:
public with sharing class OpportunityTriggerHandler {
public static void newOpportunity( List<Opportunity> oldOpportunitys, List<Opportunity> newOpportunitys ) {
for (Opportunity opp: newOpportunitys) {
updateOwnerData( opp );
}
}
public static void updateOpportunity( List<Opportunity> oldOpportunitys, Map<Id, Opportunity> newOpportunitys ) {
for (Opportunity opp: oldOpportunitys) {
updateOwnerData( opp );
}
}
public static void updateOwnerData( Opportunity opp ) {
opp.OwnerLookup__c = opp.OwnerId;
}
}然后,我在Opportunity/Account对象上创建公式字段,以转到任何所有者(用户)对象字段,例如Oppty owner Name公式字段:
OwnerLookup__r.FirstName & " " & OwnerLookup__r.LastName发布于 2010-04-16 08:33:55
VLOOKUP函数将是一个很好的尝试,但是
的数据
我认为您需要从您的应用程序中查询
SELECT Owner.FirstName, Owner.LastName FROM Lead除此之外。一些“插入后,更新后”触发器,当所有者改变时,将填充您的自定义字段?
https://stackoverflow.com/questions/2649588
复制相似问题