2011-05-25 55 views
3

当通过PHP使用Salesforce SOAP API时,如果我有一个对象,该对象具有设置为外部标识的帐户上具有特定字段的帐户的查询字段,我可以请执行以下操作:简化记录类型Id链接

$sfBooking->fields['Account__r'] = "<type>Account</type>" 
    . "<custom_account_id__c>" 
    . utf8_encode($tboxBooking->client_id) 
    . "</custom_account_id__c>"; 

当试图链接记录而不必诉诸使用其Salesforce ID时,这非常方便。

我想知道是否有类似的类型的速记,我可以通过API在对象上设置记录类型时使用。通过首先查询记录类型对象来获取记录类型标识符是我希望尽可能删除的一个步骤。

回答

1

可以使用在记录类型名称字段做到这一点,您生成的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>"; 
+0

你有样本代码哪个有效?我已经尝试了一些与Name和DeveloperName字段无关的不同的事情。 – 2011-05-27 09:24:29

+0

增加了一个例子。 – superfell 2011-05-27 17:05:04

+0

谢谢,并且如果字段上的idLookup属性设置为true,则可以使用该字段。然而,对于大多数事情来说这是错误的。 – 2011-06-15 10:11:31

1

David,我不知道设置RecordType的类似的简写方法。不幸的是,RecordType没有为实现这一目标而需要的外部标识。

我的建议是查询所有的RecordTypes并建立一个DeveloperName到Id的本地查找表/数组。然后,您可以在整个应用程序中使用此查找表/数组,以根据Salesforce中该RecordType的DeveloperName设置正确的RecordType Id。