2011-05-25 61 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。