0

私は apex を初めて使用し、毎日実行される apex スケジュール クラスを作成しました。アカウントのコミッションのアカウント審査日が 2 週間 (14 日) 先の場合、スケジューラーは営業部門にメールを送信します。メールにはフローへのリンクが含まれています。フローは、新しいコミッションを計算するプロセスを開始します。そのためには、メールの送信をトリガーしたアカウント (アカウントのレビュー日が 2 週間以内のアカウント) から情報を取得するようにフローを理解する必要があります。

現在、電子メールはフローへのリンクとともに正常に送信されます。フローへのリンクは機能しますが、フローに到達すると、フローはどのアカウントから情報を取得する必要があるかを認識/理解していません。スケジューラのコードやフローのコードを変更する必要があるかどうかわかりません。

フローが情報にアクセスする方法は次のとおりです。

最初の画面の前に、フロー内のレコード ルックアップが発生します。アカウント ID と変数 vaAccountID から情報を引き出します。変数 {!vaAccountID} には、手数料にリンクされている AccountID が入力されていると思います。

スケジューラーを実行すると、アカウント ID に基づいてアカウントのレビュー日を持つアカウントがあるかどうかを判断します。フロー リンクを含む電子メール テンプレートを営業部門に送信します。

スケジューラは電子メールを送信し、「満足」しています。メソッドを実行するために必要な基準は完全です (アカウントのレビュー日が今から 14 日後に設定されたアカウントがあり、そのアカウントがメールを送信します)。

global class AccountReviewSchedulerEmailAcc implements Schedulable { 

    global void execute (SchedulableContext ctx) 
    { 
        sendEmail(); 
    }

    public void sendEmail()
    {

        for(Account acc : [SELECT Id FROM Account WHERE Next_Account_Review_Date__c = : system.Today().addDays(14)])
        {
            Messaging.SingleEmailMessage mail = new Messaging.SingleEmailMessage(); 
            mail.setTemplateId('00XF0000000LfE0'); 
            mail.setTargetObjectId('005J0000000JWYx'); 
            mail.setSaveAsActivity(false);
            Messaging.sendEmail(new Messaging.SingleEmailMessage[] {mail }); 
        }
    }

}

しかし、その流れは「幸せ」ではありません。どのアカウントから情報を取得するかはわかりません。

フローの最初の画面では、経常収益とアカウント ページへのリンクが表示されるはずです。経常収益フィールドは空白です。アカウントページへのリンクが機能しません。

フローの最初の画面から先に進もうとすると、Salesforce から一般的なエラー画面が表示され、Salesforce から詳細なエラー メッセージが表示されます。それは言います:

Encountered unhandled fault when running process Organic_Commission_Determination_Flow/301J000000001Tx exception by user/organization: 00DJ00000000YTl/{4} Source organization: 00DA0000000KZI8 (null)
interaction.dal.exception.DALExecutionFault: ; nested exception is: 
    common.exception.ApiQueryException: 
Account.Annual_RR__c FROM Account WHERE (Account.Id = '{!Commission__c.AccountId__c}')
                                         ^ ERROR at Row:1:Column:89 invalid ID field: {!Commission__c.AccountId__c} (There was a problem executing your command.) > RETRIEVE

caused by element : Data lookup.Lookup_Account

caused by: interaction.dal.exception.DALExecutionFault: ; nested exception is: 
    common.exception.ApiQueryException: 
Account.Annual_RR__c FROM Account WHERE (Account.Id = '{!Commission__c.AccountId__c}')
                                         ^ ERROR at Row:1:Column:89 invalid ID field: {!Commission__c.AccountId__c} (There was a problem executing your command.) > RETRIEVE

Salesforce Error ID: 580775287-15539 (1733087783)

このエラー メッセージはどういう意味ですか? Salesforce のエラーに関する詳細情報を取得するにはどうすればよいですか? また、この問題のトラブルシューティングを行うにはどうすればよいですか? このプロセスが非常に複雑であることは理解していますが、1 つの基本的な質問に関連しています。Apex スケジューラでレビュー日が 14 日先のアカウントから情報を取得する必要があることをフローに認識させるにはどうすればよいでしょうか?

4

1 に答える 1

0

エラーメッセージで実行されている SOQL ステートメントを見てください。

Account.Annual_RR__c FROM Account WHERE (Account.Id = '{!Commission__c.AccountId__c}')

これは、メール テンプレートのリンクが、メールの送信時にフィールドの値をバインドするのではなく、リテラル値「{!Commission__c.AccountId__c}」を SOQL に渡していることを示しています。そのため、アカウント ID を URL に渡すのではなく、この文字列を渡していますが、これはフローが期待するものではないことは間違いありません。

これは、フィールドの API 名が電子メール テンプレートに正しく入力されていない場合、またはテンプレートにバインドされたレコードCommission__cが期待どおりのタイプではない場合に発生する可能性があります。つまり、送信しているレコードが email template の正しいオブジェクト タイプではないか、オブジェクトにフィールド00XF0000000LfE0がありません。AccountId__cCommission__c

于 2012-07-25T20:02:42.363 に答える