• T.Abe
  • NEWBIE
  • 30 Points
  • Member since 2019

  • Chatter
    Feed
  • 1
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 0
    Questions
  • 1
    Replies
いつもお世話になっております。

トリガのハンドラークラス内で、処理1から処理2に渡す過程に以下のコードがあります。
List<Id> deletedIdList = new List<Id>();
if(deleteList.size() > 0){
	for(sObject deleteRecord: deleteList){
		deletedIdList.add((Id)deleteRecord.get('Id'));
	}
}
returnList.addAll(updateList);
for(sObject sObj: sObjList){
	for(sObject updated: updateList){
		if(updated.Id == sObj.Id){
			break;
		}
	}
	System.debug(deletedIdList);
	if(deletedIdList.size() == 0 || !deletedIdList.contains((Id)sObj.get('Id'))){
			returnList.add(sObj);
	}
}
処理1では、カスタムオブジェクトAのレコードの中に、特定の項目の値がTrigger.newのレコードと一致するレコードがある場合、一部の項目をその古いレコードに上書きし、Trigger.newのレコード自体は後で削除する、という処理を行っています。
この時、上書きされた古いレコードはupdateListに、Trigger.newのレコードはdeleteListに格納しています。

その後、上のコードの処理で以下のレコードをreturnListに格納させます。

・updateListの全レコード
・sObjList(中身はTrigger.new)のうち、deleteListに格納されていないレコードすべて

returnListに格納後、updateListとdeleteListはそれぞれ更新・削除を行い、returnListを処理2へと渡します。

この時、上のコードでは14行目にあるSystem.debugを削除してしまうと、deleteListの中身がreturnListにも格納されてしまい、処理2でENTITY IS DELETEDがスローされてしまいます。
しかし、このSystem.debugがあると、エラーは発生せず想定通りに処理が終了します。
  1. このような現象に遭遇した方はいらっしゃいますか。
  2. このような現象が発生する原因は何が考えられますか。
  3. System.debugなしで処理を正常に終了させるには、どうすればよいでしょうか。
以上3点、わかる方がいらっしゃいましたらよろしくお願いします。
いつもお世話になっております。

トリガのハンドラークラス内で、処理1から処理2に渡す過程に以下のコードがあります。
List<Id> deletedIdList = new List<Id>();
if(deleteList.size() > 0){
	for(sObject deleteRecord: deleteList){
		deletedIdList.add((Id)deleteRecord.get('Id'));
	}
}
returnList.addAll(updateList);
for(sObject sObj: sObjList){
	for(sObject updated: updateList){
		if(updated.Id == sObj.Id){
			break;
		}
	}
	System.debug(deletedIdList);
	if(deletedIdList.size() == 0 || !deletedIdList.contains((Id)sObj.get('Id'))){
			returnList.add(sObj);
	}
}
処理1では、カスタムオブジェクトAのレコードの中に、特定の項目の値がTrigger.newのレコードと一致するレコードがある場合、一部の項目をその古いレコードに上書きし、Trigger.newのレコード自体は後で削除する、という処理を行っています。
この時、上書きされた古いレコードはupdateListに、Trigger.newのレコードはdeleteListに格納しています。

その後、上のコードの処理で以下のレコードをreturnListに格納させます。

・updateListの全レコード
・sObjList(中身はTrigger.new)のうち、deleteListに格納されていないレコードすべて

returnListに格納後、updateListとdeleteListはそれぞれ更新・削除を行い、returnListを処理2へと渡します。

この時、上のコードでは14行目にあるSystem.debugを削除してしまうと、deleteListの中身がreturnListにも格納されてしまい、処理2でENTITY IS DELETEDがスローされてしまいます。
しかし、このSystem.debugがあると、エラーは発生せず想定通りに処理が終了します。
  1. このような現象に遭遇した方はいらっしゃいますか。
  2. このような現象が発生する原因は何が考えられますか。
  3. System.debugなしで処理を正常に終了させるには、どうすればよいでしょうか。
以上3点、わかる方がいらっしゃいましたらよろしくお願いします。