我正在使用以下查询尝试从帐户上的用户查找中提取字段。帐户上有一个名为Dedicated_Rep__c的字段,它是一个用户查找。我正在建立我的按钮,我希望能够拉出机会账户的专用代表的名字,姓氏和电子邮件。这是我的代码:
function getDedicatedAccountRep (oppId) {
var result = sforce.connection.query("select Account.Id, Account.Dedicated_CS_Rep__r.FirstName from Opportunity where Id = '" + oppId + "' ");
if(!result || result['size'] != 1) {
return null;
}
var DedRepRole = result.getArray('records')[0];
return DedRepRole.Account;
}
var dedicatedRep = getDedicatedAccountRep('{!Opportunity.Id}');
我收到错误:
无法读取未定义
的属性'Dedicated_CS_Rep__c'我稍后在按钮中引用代码,并通过put:dedicatedRep.Dedicated_CS_Rep__r.FirstName
实例化它答案 0 :(得分:0)
从类似的东西开始(我更喜欢Google Chrome的javascript控制台,您可以使用Ctrl + Shift + J打开它;但可以随意使用Firefox + Firebug或IE的开发人员工具......)
{!requireScript("/soap/ajax/29.0/connection.js")}
var result = sforce.connection.query("SELECT Account.Dedicated_CS_Rep__r.FirstName FROM Opportunity WHERE Id = '{!Opportunity.Id}'");
console.log(result);
debugger;
这将让您检查查询结果并使用结果。我认为你的问题是完整的表达式看起来像这样:
result.records.Account.Dedicated_CS_Rep__r.FirstName
这里很多都可能出错。 result
应该没问题,records
应该总是1行,因为我们为一个机会运行它(让我们忽略疯狂的情况,有人删除了导航到页面并点击按钮之间的Opp ......但是仍然:
Account
可以为空白(开箱即用,拥有私人机会完全有效;也许您的组织已根据需要标记了该字段)。 所以 - 你有2次机会击中空指针异常:
因此,受到适当保护的代码会产生null / undefined检查:
{!requireScript("/soap/ajax/29.0/connection.js")}
var result = sforce.connection.query("SELECT Account.Dedicated_CS_Rep__r.FirstName FROM Opportunity WHERE Id = '{!Opportunity.Id}'");
console.log(result);
if(result != null
&& result.records != null
&& result.records.Account != null
&& result.records.Account.Dedicated_CS_Rep__r != null){
alert(result.records.Account.Dedicated_CS_Rep__r);
// return result.records.Account.Dedicated_CS_Rep__r;
} else {
alert('Nope');
// return null;
}