Я должен создать запись из моего веб-приложения в salesforce:
error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('display_startup_errors', true);
ini_set('xmlrpc_errors', true);
define("USERNAME", "xxxxxxxxx");
define("PASSWORD", "xxxxxxxxx");
define("SECURITY_TOKEN", "xxxxxxxxxxxxxxxxxxxxxxxxxxx");
require_once ('soapclient/SforceEnterpriseClient.php');
$mySforceConnection = new SforceEnterpriseClient();
$mySforceConnection->createConnection("soapclient/enterprise.wsdl.xml");
$mySforceConnection->login(USERNAME, PASSWORD.SECURITY_TOKEN);
function createRecord(){
global $mySforceConnection;
$records = array();
$records[0] = new stdclass();
$records[0]->FirstName = 'Myriam';
$records[0]->LastName = 'Makeba';
$records[0]->Phone = '(510) 555-5555';
$records[0]->BirthDate = '1957-01-25';
$records[0]->contractType__c = "CDI";
$response = $mySforceConnection->create($records, 'Contact');
$ids = array();
foreach ($response as $i => $result) {
echo $records[$i]->FirstName . " " . $records[$i]->LastName . " ". $records[$i]->Phone . " created with id " . $result->id
. "<br/>\n";
array_push($ids, $result->id);
}
}
Вы видите, что я хочу обновить настраиваемое поле «contractType__c», оно выдает мне ошибку:
Fatal error: Uncaught SoapFault exception: [sf:INVALID_FIELD] INVALID_FIELD: No such column 'TypeContrat__c' on entity 'Contact'.
If you are attempting to use a custom field, be sure to append the '__c' after the custom field name.
Please reference your WSDL or the describe call for the appropriate names.
если я прокомментирую эту строку, она вставит записи, моя цель — обновить настраиваемое поле salesforce. Извините за мой плохой английский.
Спасибо.
Oups! Последние новости я попытался вставить запись без пользовательского поля, я также получил ошибку:
stdClass Object (
[errors] => Array (
[0] => stdClass Object (
[message] => ContactBeforeInsert: execution of BeforeInsert caused by: System.NullPointerException: Attempt to de-reference a null object Trigger.ContactBeforeInsert: line 83, column 1 [statusCode] => CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY ) )
[id] => [success] => )
stdClass Object (
[errors] => Array (
[0] => stdClass Object (
[message] => ContactBeforeInsert: execution of BeforeInsert caused by: System.NullPointerException: **Attempt to de-reference a null object Trigger.ContactBeforeInsert: line 83**, column 1 [statusCode] => CANNOT_INSERT_UPDATE_ACTIVATE_ENTITY ) ) [id] => [success] => )
Первая ошибка:
Согласно вашему описанию, вы получаете проблему «INVALID_FIELD: нет такого столбца ‘TypeContrat__c’ на объекте ‘Контакт’. Поэтому, пожалуйста, проверьте имя API этого поля в salesforce. Я думаю, что вы что-то упустили в имени API пользовательского поля контакта.
Вторая ошибка:
В вашей организации salesforce есть триггер «ContactBeforeInsert» для контакта, который получает исключение нулевого указателя. (Означает, что они получают какое-то значение, и это ноль). Поэтому, пожалуйста, проверьте этот триггер. Следуйте инструкциям, чтобы увидеть список контактов триггера Перейти к настройке-> Настройка -> контакт -> триггер.
Других решений пока нет …