やりたいこと
新規行動を作成時、打ち合わせなどの活動を行った日付から10日以上超過している場合、レコードを登録できないようにしたい。
=行動の「開始」日が10日以上前の場合、レコードを保存できないようにしたい。
ActivityDate では入力規則が働かない?
日付 = ActivityDateと、数式作成時の項目の挿入では表示されますが、これで「開始」の時間を指定します。レコード作成日が「開始」項目の日時より10日を超えていたら登録できないよう、次のような数式を作成してみました。
ActivityDate + 10 <= TODAY()動作を確認すると、レコードは「開始」項目+10日を超えていても登録できてしまいました……
入力規則は動かなかったのです!
しかしながら、終日行動項目をTrueにする(チェックを入れる)と、入力規則が働きました。
ActivityDate をさらに調べてみたら
ヘルプを見直してみました。
◇Salesforce >ヘルプ >活動の日付項目と作成日項目の違いは何ですか?日付 (ActivityDate) - 次のいずれかを示します。
・ToDo の場合は、ToDo の期日を示します。
・行動の場合は、終日行動 が True に設定されている場合のみ、行動の開始日を示します。
さらに、
加えて:
時刻 (ActivityDateTime) は行動のみの項目で、終日行動 が False に設定されている場合に時間が表示されます。
とも。
つまり、こういうことですか?
終日行動にチェックを入れる → ActivityDate に開始時刻が保存される
終日行動にチェックを入れない → ActivityDateTime に開始時刻が保存される
入力規則もこのルールのとおりに動いている(入力規則の計算時、参照する項目が異なる)のかもしれません。
解決方法:ActivityDateTimeとActivityDateTimeを併用する
というわけで、数式を次のように修正しました。
ActivityDate + 10 <= TODAY() || ActivityDateTime + 10 <= now()※ActivityDateTimeは、項目の挿入で「時間」を選択します。
設定後、動作確認をすると、
「終日行動」にチェックを入れていなくても
「終日行動」にチェックを入れていても
入力規則が想定どおり動きました!
感想
普段は何気なく使っていた「終日行動」ですが、まさか入力規則を作るときに考慮しなければならない項目とは、思いもよりませんでした。
時間の項目に対して設定をする際は、日付か時間か、その違いも意識したほうが良さそうですね。
{{i18n("articles.view.premium")}}