Привет,
Ну, я сбит с толку. Мне было поручено обновить скрипт PHP, который использует BulkAPI для вставки некоторых данных в объект Opportunity.
Все идет хорошо, за исключением того, что Bulk API возвращает эту ошибку для некоторых четко определенных настраиваемых полей:
InvalidBatch : Field name not found : cv__Acknowledged__c
и тому подобное.
Я подумал, что, наконец, нашел проблему, когда обнаружил, что используемая версия WSDL довольно старая (Partner WSDL). Поэтому я быстро восстановил WSDL. Единственная проблема? Предприятие, Партнер и т. Д. .... все они ... не включают эти поля. Они все идут из пакета Common Ground и начинаются с cv_
Я даже пытался найти их в проводнике объектов в Workbench, а также в проводнике схем в Force.com IDE.
Итак, пожалуйста ... одолжите мне свой опыт. Как я могу обновить эти значения?
Заранее спасибо!
Клиф
Скриншоты, подтверждающие, что у меня правильный доступ:
![alt text](https://i.stack.imgur.com/pKPqK.png)
РЕДАКТИРОВАТЬ - Вот мой код:
require_once 'soapclient/SforcePartnerClient.php';
require_once 'BulkApiClient.php';
$mySforceConnection = new SforcePartnerClient();
$mySoapClient = $mySforceConnection->createConnection(APP.'plugins'.DS.'salesforce_bulk_api_client'.DS.'vendors'.DS.'soapclient'.DS.'partner.wsdl.xml');
$mylogin = $mySforceConnection->login('redacted@redacted.com', 'redactedSessionredactedPassword');
$myBulkApiConnection = new BulkApiClient($mylogin->serverUrl, $mylogin->sessionId);
$job = new JobInfo();
$job->setObject('Opportunity');
$job->setOpertion('upsert');
$job->setContentType('CSV');
$job->setConcurrencyMode('Parallel');
$job->setExternalIdFieldName('Id');
$job = $myBulkApiConnection->createJob($job);
$batch = $myBulkApiConnection->createBatch($job, $insert);
$myBulkApiConnection->updateJobState($job->getId(), 'Closed');
$times = 1;
while($batch->getState() == 'Queued' || $batch->getState() == 'InProgress')
{
$batch = $myBulkApiConnection->getBatchInfo($job->getId(), $batch->getId());
sleep(pow(1.5, $times++));
}
$batchResults = $myBulkApiConnection->getBatchResults($job->getId(), $batch->getId());
echo "Number of records processed: " . $batch->getNumberRecordsProcessed() . "\n";
echo "Number of records failed: " . $batch->getNumberRecordsFailed() . "\n";
echo "stateMessage: " . $batch->getStateMessage() . "\n";
if($batch->getNumberRecordsFailed() > 0 || $batch->getNumberRecordsFailed() == $batch->getNumberRecordsProcessed())
{
echo "Failures detected. Batch results:\n".$batchResults."\nEnd batch.\n";
}
И, наконец, пример отправляемых данных CSV:
"Id","AccountId","Amount","CampaignId","CloseDate","Name","OwnerId","RecordTypeId","StageName","Type","cv__Acknowledged__c","cv__Payment_Type__c","ER_Acknowledgment_Type__c"
"#N/A","0018000000nH16fAAC","100.00","70180000000nktJ","2010-10-29","Gary Smith $100.00 Single Donation 10/29/2010","00580000001jWnq","01280000000F7c7AAC","Received","Individual Gift","Not Acknowledged","Credit Card","Email"
"#N/A","0018000000nH1JtAAK","30.00","70180000000nktJ","2010-12-20","Lisa Smith $30.00 Single Donation 12/20/2010","00580000001jWnq","01280000000F7c7AAC","Received","Individual Gift","Not Acknowledged","Credit Card","Email"