Salesforce:从c#创建机会行项目和机会

本文关键字:机会 项目 创建 Salesforce | 更新日期: 2023-09-27 18:04:32

使用Salesforce的企业wsdl,我试图保存机会行项目和机会。但我得到以下错误:

INVALID_FIELD:在实体'Opportunity'上没有这样的列'Opportunity lineitems '如果您试图使用自定义字段,请务必在自定义字段名称后附加'__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。

Salesforce:从c#创建机会行项目和机会

这里有一个非常类似的问题,不确定我们是否应该将其标记为重复:Salesforce:在PHP中创建机会lineitems作为机会的一部分

机遇号上的OpportunityLineItems不是一个真正的领域。这就是所谓的"关系名称"…类似于普通数据库中的表别名,在进行连接时尤其有用。和HasOpportunityLineItem是一个只读字段:)我不认为这些应该是QueryResult,检查http://www.salesforce.com/us/developer/docs/api/Content/sample_create_call.htm的一些提示?

您需要首先插入机会,操作结果将为您提供记录的Id。然后,您应该插入行项的列表(数组)。

这意味着2个API调用和额外的考虑当Opp头保存OK但一行或多行失败时该怎么办…因此,也许像我在另一个问题中建议的那样编写一个Apex web服务是个好主意。