You need to sign in to do that
Don't have an account?
SWATANABE0930
カレンダーでドラッグ&ドロップした「行動」の「開始」が、EventのBefore Updateトリガーで取得できません
はじめまして。渡邉と申します。
以下のように、「行動(Event)」に対して、Before Update時に「開始(StartDateTime)」を参照するトリガーを作成しています。
// サンプル : 「開始(StartDateTime)」を取得して、「説明(Description)」に設定するトリガー
trigger EventTrigger on Event (before update) {
if (Trigger.isBefore && Trigger.isUpdate) {
for (Event ev : Trigger.new) {
ev.Description = '' + ev.StartDateTime;
}
}
}
Trigger.new から取得した「行動」レコードのStartDateについてですが、
「行動」の編集画面で「保存」した場合には、更新後の値が取得できます。
しかし、カレンダービューで「行動」をドラッグ&ドロップした場合は、
更新後の値ではなく、更新前の値になってしまいます。
Salesforce側のバグではないかと思うのですが、何かご存知の方がいらっしゃいましたら、共有いただけないでしょうか。
また、回避方法としては、Before Update からAfter Update に変更することが思いつくのですが、他に方法がありましたらご教授いただけないでしょうか。
以上、よろしくお願い申し上げます。
以下のように、「行動(Event)」に対して、Before Update時に「開始(StartDateTime)」を参照するトリガーを作成しています。
// サンプル : 「開始(StartDateTime)」を取得して、「説明(Description)」に設定するトリガー
trigger EventTrigger on Event (before update) {
if (Trigger.isBefore && Trigger.isUpdate) {
for (Event ev : Trigger.new) {
ev.Description = '' + ev.StartDateTime;
}
}
}
Trigger.new から取得した「行動」レコードのStartDateについてですが、
「行動」の編集画面で「保存」した場合には、更新後の値が取得できます。
しかし、カレンダービューで「行動」をドラッグ&ドロップした場合は、
更新後の値ではなく、更新前の値になってしまいます。
Salesforce側のバグではないかと思うのですが、何かご存知の方がいらっしゃいましたら、共有いただけないでしょうか。
また、回避方法としては、Before Update からAfter Update に変更することが思いつくのですが、他に方法がありましたらご教授いただけないでしょうか。
以上、よろしくお願い申し上げます。
渡邉さん、こんにちは。常ともうします。
渡邉さんが述べたバグに困ってしまったことがあります。一番イライラさせるのはApex テスト[1]実行でバグを曝せない事だと思います。はっきりバグを見える[2]のに…
渡邉さんはもうセールスフォースサポートにケースを作成しましたか。以下は私のバグ再発現過程です。
回避方法はafter updateトリガでfutureメソッドを呼ぶことしかないと思います。本当に私が間違ったらいいですけど…
[1]: Apex テスト (http://pastebin.com/e6Ztg7zE)
[2]: バグを見える (http://www.youtube.com/watch?v=jxyyTwpEfQM)
同じ悩みを持っている方の意見がいただけて、心強くなりました。
こちらに投稿させていただいてから、セールスフォースに問合せてみたところ、先ほど回答がありました。
”仕様”とのことだそうで、言いたいことはあるのですが、そのような回答があったことを共有させていただきます。
回避方法も回答いただきましてありがとうございます。
いろいろ試したところ、EventオブジェクトのActivityDateTimeは、カレンダービューで行動をドラッグ&ドロップした場合でも、Before Updateで更新後の値になるようです。(だたし、「終日」チェックの場合の考慮が必要になりますが。)
今回の要件に合わせて、ActivityDateTimeで大丈夫なのか、After Updateトリガーで対応するかを検討したいと思います。