2013-12-13 80 views
2

我在Salesforce中有一個自定義對象,我需要通過「帳戶」設置主從關係關係。作爲主人和CompHist的帳戶是詳細信息。我遇到的問題是我需要將關係設置爲關閉對象內的自定義字段。示例:在兩個現有的Salesforce對象上建立關係

1.)帳戶有一個名爲CustomerId的自定義字段。

2.)CompHist還具有名爲CustomerId的自定義字段。

3.)我需要能夠通過CustomerId字段鏈接在一起用於報告生成。

大約2,000條記錄在每個月的8號左右插入CompHist。這是從.NET應用程序完成的,該應用程序在預定時間啓動,從我們的數據庫收集信息,然後通過SOAP API將該數據上傳到salesforce。

也許我誤解了Salesforce關係如何工作,因爲我對salesforce開發相當新(幾個月)。

感謝, 蘭迪

回答

3

有一種方式來獲得這種無觸發器將鏈接的記錄或工作前查詢SF學習帳戶ID在.NET之前,你會推CompHistories。

設置

在帳戶:設置你的客戶ID字段 「外部ID」 複選框。我建議你也設置「Unique」。

關於CompHist:您需要決定移動它們還是與Account關係設置是可以接受的 - 它會一直保持這種狀態。當您決定勾選/取消將您的查找/ m-d定義爲Account時的「可重新設置的主要細節」。

如果您對這些詳細信息有某些ID,例如「訂單項編號」 - 請考慮製作分機。 ID。對他們也是。未來當終端用戶提問報告時可能會保存一些時間,或者你必須做一些「刷新」並推送來自.NET的所有行(將幫助你找出要插入的內容以及要更新的內容)。

在這一點上,思考如何填補缺失數據(Ext。Id中的所有空值)字段很有用。


的關係

如果你有外接IDS的實際確立之設置它很容易告訴銷售人員找出鏈接給你的。該操作稱爲upsert(在updateinsert之間混合)並且可以用於2種口味。

「基本」upsert用於創建/更新解決;意思是「親愛的Salesforce的,請保存身份識別碼= 1234。這CompHist記錄,我不知道有什麼標識在數據庫中,並坦率地說我不在乎,去想出解決辦法好不好?

  • 如果沒有這樣的記錄 - 將會創建一個。
  • 如果只有1個匹配項 - 它會被更新。
  • 如果發現超過1個--SF不知道哪一個更新並向您拋出錯誤(這就是爲什麼標記爲「唯一」是個好主意,您可能會更快發現錯誤)。

「高級」upsert用於維護外鍵,建立查找。 「親愛的SF,請把這個CompHist鉤到我的數據庫中標記爲」ABZ123「的賬戶。我提到我不在乎你的ID,我不能在我上傳之前先詢問你的數據庫嗎?我的東西?

  • 再次 - 完全匹配 - 按預期工作。
  • 0或2個賬戶具有相同的分機號碼。 id值=錯誤。

代碼PLZ

我建議你使用數據加載器或類似工具發揮率先拿到一抓。究竟發生了什麼,如何映射字段以及如何不被混淆(這兩種類型的upsert可以同時使用)。一旦你設法以你想要的方式推動你的改變,你可以稍微修改你的集成。

SOAP API UPSERT:http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_upsert.htm(在底部的C#示例)

REST API:http://www.salesforce.com/us/developer/docs/api_rest/Content/dome_upsert.htm

如果你喜歡一個的Salesforce的Apex例如:Can I insert deserialized JSON SObjects from another Salesforce org into my org?

+0

所以把我的頭後上方閱讀你的文章我需要: 1.)截斷CompHist對象。 2.)創建關係 3.)在我的.NET應用程序中,我需要查詢SF帳戶的Salesforce ID。那麼當插入該賬戶的數據時,我強制Salesforce在將數據插入CompHist時使用該ID? –

+0

這基本上會鏈接我擁有的自定義ID,但salesforce仍將使用爲帳戶創建的ID。 –

+0

爲什麼要從CompHist中刪除任何數據?你有它的「CustomerId」和帳戶的查找/主 - 細節,對嗎?還是田野還沒有呢?在插入之前,您可以在SF中查詢帳戶字段......但我的答案的重點是向您展示如何根本不必這樣做,您如何告訴Salesforce爲您解決此匹配問題。 – eyescream

相關問題