2013-01-16 47 views
0

我試圖創建'收入日期'字段,該字段遵循以下邏輯.. 我希望根據日期字段計算收入日期字段我們的CS小組編輯。 字段(編輯日期字段) - 在乘坐日期 - 電子郵件開始日期 - 線日期 - 估計的電子郵件開始日期 - 估計GL日期試圖在Salesforce中創建自定義「收入日期」字段

第5個自動計算日期字段(預計正式上線日期),這總是有一個日期值如果上述字段爲空(僅被使用)

所以,我試圖用邏輯

(i)是療法e 過期日期?如果是,那麼採取這個並停止。 如果沒有,去到(II)

(二)是否存在「電子郵件開始日期」或「直播日期」中的至少一個?如果是的話,拿走這些之前的並停止。 如果沒有,去到(III)

(三)是否有「估計的電子郵件開始日期」和「估計克L-日期」中的至少一個? ?如果是的話,拿走這些之前的並停止。 如果沒有,去到(IV)

(iv)如上述所有字段爲空,採取預計正式上線日期

我知道這看起來混亂,但其僅僅是因爲我們的方式計算我們的收入,這取決於我們的CS團隊在客戶網站上的日期(與交易的結束日期不同)時,我們的CS團隊輸入的日期。

似乎在以下公式的某處出錯..

BLANKVALUE(Over_ride_Date__c, IF(NOT(ISBLANK(Email_Start_Date__c))& & NOT(ISBLANK(Live_Date__c)),IF(Email_Start_Date__c < Live_Date__c,Email_Start_Date__c,Live_Date__c)),IF(ISBLANK(Email_Start_Date__c)& & ISBLANK( Live_Date__c)), IF(NOT(ISBLANK(Estimated_Email_Start_Date__c))& & NOT(ISBLANK(Estimated_G_L_Date__c)), IF(Estimated_Email_Start_Date__c < Estimated_G_L_Date__c,Estimated_Email_Start_Date__c,Estimated_G_L_Date__c)), IF(ISBLANK(Estimated_Email_Start_Date__c)& & ISBLANK(Estimated_G_L_Date__c)),BLANKVALUE(Estimated_Go_Live_Date__c,Estimated_Go_Live_Date__c)))

回答

1

我會盡量走你通過我的設計過程;)

公式的基本形狀可以是這樣的:

BLANKVALUE(Over_ride_Date__c, 
    IF(ISBLANK(Email_Start_Date__c) && ISBLANK(Live_Date__c), 
     IF(ISBLANK(Estimated_Email_Start_Date__c) && ISBLANK(Estimated_G_L_Date__c), 
      Estimated_Go_Live_Date__c, 
      /* need to use Estimated_Email_Start_Date__c or Estimated_G_L_Date__c */ 
     ), 
     /* need to use Email_Start_Date__c or Live_Date__c */ 
    ) 
) 

現在應該很容易。如果沒有設置「Override」並且「Email Start date」和「Live date」都爲空,則轉到下一個變量。如果其中至少有一個設置了,我們會嘗試使用它們。和最後一對日期類似。


所以,現在你會做什麼:

  1. 電子郵件和Live被填充 - 以小
  2. 電子郵件填寫,現場空 - 以電子郵件
  3. 電子郵件空,現場充滿 - 採取生活

有幾種方法可以做到這一點。有點長,但閱讀:

IF(ISBLANK(Email_Start_Date__c), 
    Live_Date__c, 
    IF(ISBLANK(Live_Date__c), 
     Email_Start_Date__c, 
     IF(Email_Start_Date__c < Live_Date__c, Email_Start_Date__c, Live_Date__c) 
    ) 
) 

但我要提倡這樣的:

IF(ISBLANK(Live_Date__c) || BLANKVALUE(Email_Start_Date__c, Live_Date__c) < Live_Date__c, 
    BLANKVALUE(Email_Start_Date__c, Live_Date__c), 
    Live_Date__c 
) 

下面是它的工作原理證明:只有

truth table

(9行,因爲這是所有組合:smaller/bigger/null * smaller/bigger/null)。事實上最後一個(null and null)我們已經排除了以前的IF聲明。


這使我們...

BLANKVALUE(Over_ride_Date__c, 
    IF(ISBLANK(Email_Start_Date__c) && ISBLANK(Live_Date__c), 
     IF(ISBLANK(Estimated_Email_Start_Date__c) && ISBLANK(Estimated_G_L_Date__c), 
      Estimated_Go_Live_Date__c, 
      IF(ISBLANK(Estimated_G_L_Date__c) || BLANKVALUE(Estimated_Email_Start_Date__c, Estimated_G_L_Date__c) < Estimated_G_L_Date__c, 
       BLANKVALUE(Estimated_Email_Start_Date__c, Estimated_G_L_Date__c), 
       Estimated_G_L_Date__c 
      ) 
     ), 
     IF(ISBLANK(Live_Date__c) || BLANKVALUE(Email_Start_Date__c, Live_Date__c) < Live_Date__c, 
      BLANKVALUE(Email_Start_Date__c, Live_Date__c), 
      Live_Date__c 
     ) 
    ) 
) 
+0

我可以說明顯的,你是一個Salesforce的天才!它的工作原理非常完美,你已經很好地解釋了它。非常感謝你的努力和幫助。我必須從你身上吸取SF的教訓:) – Priyanka

+0

很高興你喜歡它,它的工作正常;)它肯定會擊敗我們在前一個做的評論的狂歡...... – eyescream

+0

@eyescream我對高品質感到驚訝你的答案。我是你的粉絲:) –