使用Salesforce的企业wsdl我试图保存机会行项目和机会。但是我收到了以下错误:
INVALID_FIELD:没有这样的列' OpportunityLineItems'实体'机会'如果您尝试使用自定义字段,请务必附加' __ c'在自定义字段名称之后。请参考您的WSDL或描述调用以获取相应的名称。
以下是我创建订单项的代码:
if (oppLineItems.Count > 0)
{
sfOpportunity.OpportunityLineItems = new QueryResult();
sfOpportunity.HasOpportunityLineItem = true;
sfOpportunity.OpportunityLineItems.records = oppLineItems.Values.ToArray();
Pricebook2 priceBook = new Pricebook2();
priceBook.PricebookEntries = new QueryResult();
priceBook.PricebookEntries.records = new List<PricebookEntry>() { priceBookEntry }.ToArray();
sfOpportunity.Pricebook2 = priceBook;
}
oppLineItems是一个字典,整个值具有机会行项的代理对象。 sfOpportunity是Opportunity的代理对象,然后发送给Salesforce。
答案 0 :(得分:1)
这里有一个非常相似的问题,不确定我们是否应该将其标记为重复:Salesforce: Creating OpportunityLineItems as part of the Opportunity in PHP
机会上的 OpportunityLineItems
不是一个真实的领域。它的名称叫&#34;关系名称&#34; ...类似于普通数据库中的表别名,特别是当你进行连接时很有用。 HasOpportunityLineItem
是一个只读字段:)我不认为这些应该是QueryResult
,请查看http://www.salesforce.com/us/developer/docs/api/Content/sample_create_call.htm以获取一些提示吗?
您需要先插入商机,操作结果会为您提供记录的ID。然后你应该插入行项目的列表(数组)。
这意味着2个API调用和额外的注意事项当Opp标头保存OK但一条或多条线路出现故障时该怎么办...所以也许编写像我在其他问题中建议的Apex web服务一样好主意