Почему я не могу обновить эти настраиваемые поля в Salesforce? - PullRequest
3 голосов
/ 21 декабря 2010

Привет, Ну, я сбит с толку. Мне было поручено обновить скрипт 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 alt text alt text

РЕДАКТИРОВАТЬ - Вот мой код:

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"

Ответы [ 3 ]

8 голосов
/ 07 января 2011

Через 2 недели, 4 случая, десятки электронных писем и телефонных звонков, 3 сообщения на доске объявлений и 1 вопрос Stackoverflow я наконец-то нашел решение.

В конце концов, проблема была довольно простой.(что делает все это еще более неприятным)

Как уже говорилось, настраиваемые поля, которые я пытался обновить, работают в пакете Convio Common Ground.По всей видимости, наша установка имеет 2 лицензии на этот пакет.Ни одна из лицензий не была назначена моей учетной записи.

Непонятно, что действительно получено / потеряно, если у вас нет лицензии, кроме доступа к API.Как демонстрирует остальная часть этой темы, я мог просматривать и обновлять поля любым другим способом.

Если вы столкнетесь с этим, вы можете просмотреть лицензии на странице «Управление пакетами» в программе установки.Выполните детализацию до рассматриваемого пакета, и в нем должны быть перечислены пользователи, которым разрешено использовать его.

alt text

Благодаря профессиональной и своевременной помощи SimonF в досках объявлений Developer Force:1014 *http://boards.developerforce.com/t5/Perl-PHP-Python-Ruby-Development/Bulk-API-So-frustrated/m-p/232473/highlight/false#M4713

0 голосов
/ 29 декабря 2010

Если вы уверены, что в профиле вашего пользователя есть FLS-доступ к полям, и назначенные макеты содержат поля, то я бы посоветовал изучить определение соответствующего пакета.Я знаю, что массовый API позволяет нормально использовать поля в управляемых пакетах (я сделал это).

На данный момент я предпочитаю, чтобы ваша организация со временем установила несколько версий этого пакета.Из-за устаревания компонента автор пакета может отказаться от этих настраиваемых полей.Посмотрите в двух местах, как только вы вошли в Salesforce:

1.) Страница определения пакета.Он должен содержать подробную информацию о том, какая версия пакета использовалась при его первоначальной установке и какая версия пакета у вас сейчас.

2.) Страница, содержащая ссылки на генерацию WSDL.Если вы решите сгенерировать корпоративный WSDL, вы должны перейти на страницу с выпадающими элементами, которые позволяют вам выбрать, какую версию пакета использовать.Попробуйте поиграть с ними, чтобы посмотреть, сможете ли вы отобразить поля.

Это всего лишь догадки.Если вы найдете больше информации, дайте мне знать, и я могу попытаться дать дополнительные рекомендации.

0 голосов
/ 24 декабря 2010

Я действительно думаю, что это проблема безопасности на уровне поля.Включено ли поле в макет возможностей для этого профиля пользователя?Безопасность на уровне поля выбирает наиболее ограничивающий вариант, поэтому, если вам кажется, что у вас есть доступ с экрана настройки, но он не включен в макет, я не думаю, что система предоставит вам доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...