2017-07-21 18 views
0

このプロセス画面: enter image description here これはエラーをスローしますが、グリッドにエラーマークが表示されています。私は、グリッドが(赤い「X」マークで)このようになりたい プロセス]ボタンをクリックした後、それはちょうど私のレコードにチェックボックスのチェックを外しPXProcessing SetErrorがUIグリッドに表示されない

enter image description here

これは私のグラフです。 :

public PXCancel<PayrollFilter> Cancel; 

    public PXSetup<PayrollSetup> PayrollSetup; 

    public PXFilter<PayrollFilter> Filter; 

    [PXFilterable] 
    public PXFilteredProcessingJoin<PayrollEmployeeProcess, PayrollFilter, 
           InnerJoin<EPEmployee, 
            On<PayrollEmployee.employeeID, Equal<EPEmployee.bAccountID>>, 
           InnerJoin<Branch, 
            On<EPEmployee.parentBAccountID, Equal<Branch.bAccountID>>>>, 
           Where<PayrollEmployee.payPeriodID, Equal<Current<PayrollFilter.payPeriodID>>, 
           And<Branch.branchID, Equal<Current<AccessInfo.branchID>>>>> EmployeePayrollProcess; 



    #region Constructor 
    public PayrollProcess() 
    { 
     PayrollSetup setup = PayrollSetup.Current; 

     EmployeePayrollProcess.SetSelected<PayrollEmployeeProcess.selected>(); 

     EmployeePayrollProcess.SetProcessDelegate(delegate (List<PayrollEmployeeProcess> employees) 
     { 
      if (Filter.Current == null) return; 

      var payPeriod = Filter.Current.PayPeriodID ?? 0; 
      var payrollPeriod = Filter.Current.PayrollPeriodID ?? 0; 

      if (payPeriod == 0 || payrollPeriod == 0) return; 

      PXLongOperation.StartOperation(this, delegate() 
      { 
       bool errorOccured = false; 
       foreach (PayrollEmployeeProcess employee in employees) 
       { 

        PayrollRegisterEntry graph = PXGraph.CreateInstance<PayrollRegisterEntry>(); 
        try 
        { 

         graph.ProcessPayroll(employee, payPeriod, payrollPeriod); 
         PXProcessing<PayrollEmployeeProcess>.SetInfo("Employee processed"); 

        } 
        catch (Exception ex) 
        { 
         errorOccured = true; 
         //employees.IndexOf(employee), 
         PXProcessing<PayrollEmployeeProcess>.SetError(ex); 
        } 
        finally 
        { 
         graph.Clear(); 
        } 
       } 
       if (errorOccured) throw new PXException("At least one employee was not processed."); 
      }); 

     }); 
     // EmployeePayrollProcess. 
    }` 

誰でも私を助けることができますか?私はAcumaticaを使用しています6

+1

ありページに設定するいくつかのBATCHUPDATEことが、私かもしれません通常、プロセスページ上のレコードの処理では、以前は私のいくつかの問題を解決するのに役立つ処理呼び出しとして静的メソッドが呼び出されています。 – Brendan

+0

グリッド設定でBatchUpdateを使用する必要がありますか?私はすでにSyncPositionの設定を –

+0

に設定しています。処理ページの例では、常にリリースINのドキュメントを使用しています。 (ページIN501000 /グラフINDocumentRelease)。 BatchUpdate = "true"を使用します。このプロセスでは、ReleaseDocという静的メソッドが呼び出されます。同様のものを実装しようとする。静的呼び出しに渡されるオブジェクトにも問題があります。その処理のアイコンを表示するのはちょっと難しいですが、このグラフをあなたの例として使ってください。 – Brendan

答えて

1

Acumaticaで例外をスローすると、ヘッダにエラーが設定されます。行レベルまたはフィールドレベルのエラーを設定するには、それを設定または上げる必要があります。エラーを設定/発生させるにはいくつかの方法がありますが、共通点は 'throw'キーワードを使用しないことです。フィルタで処理画面については

、エラーを発生させるために、次の構文を使用します。

PXFilteredProcessing<GridDetailDAC, GridFilterDAC>.SetError(rowIndex, new PXSetPropertyException("Error Message", PXErrorLevel.RowError)); 

処理画面をフィルターなし:

PXProcessing.SetError(rowIndex, new PXException("Error Message")); 
+0

これは私が探していたかもしれない、私はt200チュートリアルに従っていますが、それは仕事をしませんでした私はあなたのソリューションを試してみます。ありがとうございました –

+0

あなたはすでにSetInfoのためにそれをやっています、パターンはSetErrorのために似ています。いくつかのバリアントがあります。少し試してみて、あなたの状況に最も適したものを選んでください。 –

+0

私はそれを試しましたが、まだ表示されません –

関連する問題