0

以下のロジックに従う '収益日' フィールドを作成しようとしています。CS チームが編集する日付フィールドに基づいて収益日フィールドを計算する必要があります。フィールド (編集可能な日付フィールド) は次のとおりです。

常に日付値を持つ5 番目の自動計算日付フィールド ( Estimated Go Live Date ) (上記のフィールドが空白の場合にのみ使用)

だから、私が使用しようとしているロジックは

(i)オーバーライド日はありますか? もしそうなら、これを取って止めてください。いいえの場合は、(ii) に進みます。

(ii)「<strong>Email Start Date」または「<strong>Live Date」の少なくとも 1 つがありますか? はいの場合は、これらの早い方を取り、停止します。いいえの場合は、(iii) に進みます。

(iii) 「<strong>推定メール開始日」と「<strong>推定 GL 日付」の少なくとも 1 つがありますか? ? はいの場合は、これらの早い方を取り、停止します。いいえの場合は、(iv) に進みます。

(iv) 上記のフィールドがすべて空白の場合は、稼働開始予定日を入力してください

これは紛らわしいと思いますが、収益の計算方法が、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(IF(NOT), 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 )))

4

1 に答える 1

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 */
    )
)

今のところ簡単なはずです。「オーバーライド」が設定されておらず、「メール開始日」と「ライブ日付」の両方が空白の場合 - 次の変数に進みます。そうでなければ (まだ持っていない部分です) 少なくとも 1 つが設定されていれば、それらを使用しようとします。そして、日付の最後のペアと同様です。


では、次のようになります。

  1. メールとライブは記入済みです - 小さくしてください
  2. メールアドレス入力済み、Live null - メールを取る
  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
)

そして、これが機能する証拠です:

真理値表

(それがすべての組み合わせであるため、9 行のみ: smaller/bigger/null* smaller/bigger/null)。実際、最後の 1 つ ( 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
        )
    )
)
于 2013-01-16T19:46:35.113 に答える