Чтобы объединить операции API, заключите запрос в другой массив с каким-либо непротиворечивым символом (например, :sObjects
) в качестве ключа для каждого значения.Один и тот же символ должен повторяться перед каждым значением, поскольку оно преобразуется в повторяющиеся дочерние элементы XML.Например, если вы хотите создать две возможности, сделайте следующее:
opportunity1 = [
:type, 'Opportunity',
:amount, '10.00',
:name, 'OPP1',
:closeDate, '2008-07-04',
:stageName, 'Closed Won'
]
opportunity2 = [
:type, 'Opportunity',
:amount, '10.00',
:name, 'OPP2',
:closeDate, '2008-07-04',
:stageName, 'Closed Won'
]
puts binding.create([:sObjects, opportunity1, :sObjects, opportunity2])
Этот XML-файл создается за кулисами и отправляется в SFDC:
<create xmlns="urn:partner.soap.sforce.com">
<sObjects>
<type>Opportunity</type>
<amount>10.00</amount>
<name>OPP1</name>
<closeDate>2008-07-04</closeDate>
<stageName>Closed Won</stageName>
</sObjects>
<sObjects>
<type>Opportunity</type>
<amount>10.00</amount>
<name>OPP2</name>
<closeDate>2008-07-04</closeDate>
<stageName>Closed Won</stageName>
</sObjects>
</create>
, и вот ответ длядве возможности создаются одновременно:
{:createResponse=>{:result=>[{:id=>"0066000000KNMrOAAX", :success=>"true"}, {:id=>"0066000000KNMrPAAX", :success=>"true"}]}}
Обратите внимание, вы можете создавать до 200 записей одновременно.
Кроме того, я заметил, что если два значения являются одним и тем же точным объектом(то есть делая что-то вроде binding.create([:sObjects, opportunity1, :sObjects, opportunity1])
, конвертер XML выходит из себя, поэтому убедитесь, что они на самом деле являются отдельными объектами. Это, вероятно, ошибка в платформе, но в реальных производственных ситуациях это настолько редкий случай, который можно считать серьезным, нобудьте внимательны, пока вы тестируете.