2013-06-12 66 views
2

對於所有的salesforce專家,我需要一些幫助。我有我的聯繫人和一個名爲程序的自定義對象。我創建了一個連接對象,用於掌握與聯繫人和程序的詳細關係。我想避免將同一個聯繫人與同一個程序關聯起來。我嘗試過觸發器,但我無法創建測試部分以在沙箱外使用它。Salesforce Junction Objects

我又回到了基礎,創造了獨特的文本字段。我試圖使用默認值,但是我寫的所有東西都是錯的-_-。我試過Contact__r.Email & "-" & Program__r.Name但無濟於事。

我想工作流規則與現場更新,但我的字段更新NEVER運行。(是的,我沒有激活工作流規則),我不知道在我的規則的代碼編寫。

回答

3

工作流程觸發條件可以是一個簡單的公式,說true。或者使用「每次插入記錄」。這也取決於你的主要細節是否設置了一次,就是這樣,否則它們將是「可修復的」(在我認爲的Summer '12中引入的選項)。也許發佈你的射擊條件的截圖/文字描述?另外 - 您的獨特字段設置爲「區分大小寫」嗎?

至於填充唯一字段的公式 - 類似Contact__c + ' ' + Program__c(或任何您的字段的API名稱)應該是確定的。不要使用Contact__r.Email等,因爲這些不必是唯一的...

你必須以某種方式填寫所有現有記錄的唯一性標準(也許這就是爲什麼你聲稱它不起作用?) 。如果你可以使用Apex進行數據修復 - 這樣的事情應該讓你開始。

List<Junction__c> junctions = [SELECT Contact__c, Program__c 
FROM Junction__c 
WHERE Unique_Text_Field__c = null 
LIMIT 10000]; 

for(Junction__c j : junctions){ 
    String key = String.valueOf(j.Contact__c).left(15) + ' ' + String.valueOf(j.Program__c).left(15); 
    j.Unique_Text_Field__c = key; 
} 

update junctions; 

保持重新運行它直到它開始顯示0行處理。由於在Apex中,您通常會看到完整的18個字符的ID,但工作流程使用15個字符的版本,因此ID被裁減爲15個字符。