0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

使っているクラウドなどの小ネタAdvent Calendar 2024

Day 2

少々手を抜いたら思わぬエラーで余計に時間がかかってしまいました。

Last updated at Posted at 2024-12-01

使っているクラウドなどの小ネタ Advent Calendar 2024 2日目

フローを即興で作ったら、Apexのテストクラスでエラーです。

image.png

11:21:56:205 FATAL_ERROR System.DmlException: Upsert failed. First exception on row 0; first error: CANNOT_EXECUTE_FLOW_TRIGGER, 「取引先のメインフロー」処理失敗により、このレコードを保存できません。Salesforce システム管理者に次の詳細を報告してください。このフローで未対応の障害が発生しました
フローを処理中に未対応の障害が発生しました。詳細は、組織のシステム管理者にお問い合わせください。このフローで未対応の障害が発生しました
フローを処理中に未対応の障害が発生しました。詳細は、組織のシステム管理者にお問い合わせください。: []

手がかりがつかめない。
手を抜いてはいけませんね。sandboxにも同じフローを作ってテストクラスを走らせると...

このエラーの前に... Too many DML statements: 151 これだな

11:21:56:196 FLOW_ELEMENT_ERROR このエラーは、フローでレコードの更新が試行されたときに発生しました: Too many DML statements: 151。ExceptionCode の値については、『SOAP API 開発者ガイド』を参照してください。|FlowRecordUpdate|update_customer_nameonly

エラーになった個所をみると

この処理はテストデータをインサートしている処理ですね。レコードトリガーフローの中でもレコードの取得をやっているので151を超えた可能性が高い。

//main
FkdAdministratorConsole.GenerateData_createGenkiuuri_Account();
List<Account> Accounts = [Select id from Account];
System.assert(Accounts.size() > 0, 'Account found');

FkdAdministratorConsole.GenerateData_createZaikoHattyu_tantosya();  
FkdAdministratorConsole.GenerateData_createZaikoHattyu_Account();
FkdAdministratorConsole.GenerateData_createSyanaisiyou_Account();

FkdAdministratorConsole.GenerateData_createUri01_Account();
FkdAdministratorConsole.GenerateData_createUri02_Account();
FkdAdministratorConsole.GenerateData_createUri03_Account();
FkdAdministratorConsole.GenerateData_createUri04_Account();
FkdAdministratorConsole.GenerateData_createUri05_Account();
FkdAdministratorConsole.GenerateData_createUri06_Account();
FkdAdministratorConsole.GenerateData_createUri09_Account(); <--- ここでエラー

FkdAdministratorConsole.GenerateData_createSyanaisiiresaki_Account();

FkdAdministratorConsole.GenerateData_createGenkiuuri_tantosya();

適当なところに Test.startTest(); と Test.stopTest();を入れてDLMのカウンターをリセットしたら問題なく機能しました。

本当はこの処理の中で1件ずつupsertしないで、List変数に格納して一括更新するのが正しいだろうな。

以下のようなupsertがたくさんあります。

       Account Ac01 = new Account(
            Name ='センター',
            SeishikiMei__c ='センター',
            RyakushikiMei__c ='センター',
            customer_code__c ='00019',
            SyanaiTrihiki__c = '社内売上',
            RecordTypeId = recordTypeList[0].Id,
            
            yomi_kana__c='センター',
            Phone = Phone,
            Fax = Fax,
            zip_code__c = zip_code,
            Address1__c = Address1//,
            //Address2__c = Address2
        );
        upsert Ac01 customer_code__c; <--- ここをList.add

最終的には他でもこのクラスを使っていたのでList変数に書きなおしました。

ことの発端は私の設定ミス

image.png

指定したクラスだけにする時に、カンマをつけ忘れてしまっていました。

image.png

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?