Как я могу разместить настраиваемые поля в стандартном объекте SalesForce с помощью PHP, используя API метаданных

Я искал пару дней и не нашел, как я могу поместить свои настраиваемые поля в стандартный объект SalesForce (Account, Lead, Opportunity и т. Д.). Я нашел только информацию об API метаданных, описанную здесь, но это объясняет вставка новых метаданных только в пользовательские объекты. Я тоже нашел этот код, но он также работает только для настраиваемых объектов. Кто-нибудь знает об этом больше? Спасибо.

РЕДАКТИРОВАТЬ: Вот окончательный рабочий код для тех, кто не может найти пример.

// SOAP_CLIENT_BASEDIR - folder that contains the PHP Toolkit and your WSDL
// $USERNAME - variable that contains your Salesforce.com username (must be in the form of an email)
// $PASSWORD - variable that contains your Salesforce.com password
define("SOAP_CLIENT_BASEDIR", "../../soapclient");
require_once (SOAP_CLIENT_BASEDIR.'/SforcePartnerClient.php');
require_once (SOAP_CLIENT_BASEDIR.'/SforceMetadataClient.php');
require_once ('../userAuth.php');
try {
  $mySforceConnection = new SforcePartnerClient();
  $mySoapClient = $mySforceConnection->createConnection(SOAP_CLIENT_BASEDIR.'/partner.wsdl.xml');
  $loginResult = $mySforceConnection->login($USERNAME, $PASSWORD);
  $myMetadataConnection = new SforceMetadataClient(SOAP_CLIENT_BASEDIR.'/metadata.wsdl.xml', $loginResult, $mySforceConnection);
  $customField = new SforceCustomField();
  $customField->setFullName('Account.MyCustomFieldb__c');
  $customField->setDescription('Description of New Field');
  $customField->setLabel('My Custom Field Label');
  $customField->setType('Text');
  $customField->setLength(255);
  print_r($myMetadataConnection->create($customField));
} catch (Exception $e) {
  echo $myMetadataConnection->getLastRequest();
  echo $e->faultstring;
}

person bksi    schedule 20.12.2011    source источник


Ответы (1)


Вы должны создать заполнить CustomField структура, устанавливая свойство fullName на основе стандартного объекта, к которому вы хотите его добавить, например Account.rating__c, а затем передайте его создать вызов API метаданных. Я не знаю о PHP, но есть пример в .NET здесь.

person superfell    schedule 21.12.2011
comment
Я пробовал, но возникает ошибка. Имя настраиваемого объекта должно заканчиваться на __c. - person bksi; 22.12.2011
comment
Похоже, вы отправляете CustomObject, а не только CustomField. - person superfell; 22.12.2011