#php #salesforce
#php #salesforce
Вопрос:
При использовании Salesforce SOAP API через PHP, если у меня есть объект, у которого есть поле поиска для учетной записи с определенным полем в учетной записи, которое настроено как внешний идентификатор, я могу сделать следующее
$sfBooking->fields['Account__r'] = "<type>Account</type>"
. "<custom_account_id__c>"
. utf8_encode($tboxBooking->client_id)
. "</custom_account_id__c>";
Это довольно удобно при попытке связать записи, не прибегая к использованию их идентификатора Salesforce.
Мне интересно, есть ли аналогичный тип сокращения, который я могу использовать при настройке типа записи для объектов через API. Необходимость получения идентификатора типа записи путем первого запроса объекта типа записи — это шаг, который я хотел бы исключить, если это вообще возможно.
Ответ №1:
Вы можете сделать это, используя поле name в RecordType, ваш сгенерированный XML-файл должен выглядеть следующим образом
<create xmlns="urn:partner.soap.sforce.com">
<sobject>
<type>case</type>
<subject>Test</subject>
<recordType>
<type>RecordType</type>
<name>InternetCase</name>
</recordType>
</sobject>
</create>
основываясь на опубликованном вами коде, вы бы сделали
$sfBooking->fields['RecordType'] = "<type>RecordType</type>"
. "<name>"
. utf8_encode($tboxBooking->recordType_name)
. "</name>";
Комментарии:
1. У вас есть пример кода, который работает? Я попробовал несколько разных действий с полями Name и DeveloperName, но безрезультатно.
2. Спасибо, и в дополнение к этому, если для атрибута idLookup в поле установлено значение true, вы можете использовать это поле вместо него. Однако для большинства вещей это false.
3. К сожалению, Name не является уникальным, поэтому вы получите DUPLICATE_EXTERNAL_ID, если у вас есть типы записей для разных типов sObject с одинаковым именем.
Ответ №2:
Дэвид, я не знаю подобного сокращенного метода установки RecordType. К сожалению, у RecordType нет внешнего идентификатора, который требуется для достижения этого.
Моей рекомендацией было бы запросить все типы записей и создать локальную таблицу подстановки / массив от имени разработчика до идентификатора. Затем вы можете использовать эту справочную таблицу / массив во всем своем приложении, чтобы задать правильный идентификатор типа записи на основе имени разработчика этого типа записи в Salesforce.