【Salesforce】項目を変更した時間の差分を取得したい
動作確認
・フェーズを更新していない状態
・フェーズを一回更新した状態
・フェーズを二回更新した状態
※この状態で差分を出力
・フェーズを三回更新した状態
※更新前は二回目に更新した際の日時を設定、更新後は三回目に更新した際の日時を設定
実現方法
オブジェクトに項目を持たせるパターン
Apexや項目自動更新でフェーズ更新前日時、更新後日時を設定
※省略
Historyから取得するパターン(不可)
オブジェクトの項目履歴管理を設定
フェーズ項目の履歴を設定
TriggerHandlerで値を取得するように設定
※フェーズ項目を更新したらいつ(Before, After)Historyが作成されるのか確認
public void onBeforeUpdate(Test__c[] newList, Map<Id, Test__c> newMap, Test__c[] oldList, Map<Id, Test__c> oldMap){
System.Debug('★★★★ 関数を開始する : onBeforeUpdate');
System.Debug('★★ 変数 newList : ' + newList);
List<Test__History> tHisList = [SELECT Id, IsDeleted, ParentId, CreatedById, CreatedDate, Field, OldValue, NewValue FROM Test__History WHERE ParentId = :newList[0].Id AND Field = 'Field1__c' ORDER BY CreatedDate DESC LIMIT 2];
System.Debug('★★ for文に渡すリスト tHisList : ' + tHisList );
System.Debug('★★ for文に渡すリストのサイズ tHisList : ' + tHisList.size());
for(Test__History th : tHisList){
System.Debug('★★ for文の現在値 th : ' + th);
System.Debug('★★ for文の現在値 th.CreatedDate : ' + th.CreatedDate);
System.Debug('★★ for文の現在値 th.OldValue : ' + th.OldValue);
System.Debug('★★ for文の現在値 th.NewValue : ' + th.NewValue);
}
System.Debug('★★★★ 関数を終了する : onBeforeUpdate');
}
public void onAfterUpdate(Test__c[] newList, Map<Id, Test__c> newMap, Test__c[] oldList, Map<Id, Test__c> oldMap){
System.Debug('★★★★ 関数を開始する : onAfterUpdate');
System.Debug('★★ 変数 newList : ' + newList);
List<Test__History> tHisList = [SELECT Id, IsDeleted, ParentId, CreatedById, CreatedDate, Field, OldValue, NewValue FROM Test__History WHERE ParentId = :newList[0].Id AND Field = 'Field1__c' ORDER BY CreatedDate DESC LIMIT 2];
System.Debug('★★ for文に渡すリスト tHisList : ' + tHisList );
System.Debug('★★ for文に渡すリストのサイズ tHisList : ' + tHisList.size());
for(Test__History th : tHisList){
System.Debug('★★ for文の現在値 th : ' + th);
System.Debug('★★ for文の現在値 th.CreatedDate : ' + th.CreatedDate);
System.Debug('★★ for文の現在値 th.OldValue : ' + th.OldValue);
System.Debug('★★ for文の現在値 th.NewValue : ' + th.NewValue);
}
System.Debug('★★★★ 関数を終了する : onAfterUpdate');
}
フェーズを更新
BeforeUpdateでもAfterUpdateでもHistoryが作成されていないことを確認
※両方とも同じHistoryを取得している
開発者コンソールで取得できることを確認
※フェーズ項目更新時、作成されたHistoryを元に差分取得は不可と確認
参考リンク
無し
Author And Source
この問題について(【Salesforce】項目を変更した時間の差分を取得したい), 我々は、より多くの情報をここで見つけました https://qiita.com/RyoheiKobayashi/items/ed1bf1c4c2d7769861f2著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .