顯示要求使用者輸入實體資料的錯誤

由於使用者尚未輸入所有必要資訊,使用者經常在業務流程無法完成的情況下出現。

這種情況的一個示例是當使用者嘗試建立缺少客戶地址的下單訂單時。

根據 UX 最佳實踐,該系統應該對使用者友好,不僅告知使用者情況,還指導他解決他的問題。眾所周知,當 TSetup 表中沒有記錄時,系統已經有一個由 PXSetup<TSetup>.Current 啟用的類似機制。它是通過投擲 PXSetupNotEnteredException 在內部實現的。

最近,此異常中新增了一項新功能,允許應用程式開發人員通過指向必須重新配置的實體的連結丟擲錯誤:

INSite erroneousSite = PXSelect<
    INSite,
    Where<
        INSite.siteID, Equal<Current<SOCreateFilter.siteID>>, 
        And<INSite.active, Equal<True>, 
        And<Where<INSite.addressID, IsNull, Or<INSite.contactID, IsNull>>>>>>
    .SelectSingleBound(this, new object[] { e.Row });

if (erroneousSite != null)
{
    throw new PXSetupNotEnteredException<INSite, INSite.siteCD>(
        Messages.WarehouseWithoutAddressAndContact, 
        erroneousSite.SiteCDlnk, 
        erroneousSite.SiteCDinf);
}

結果顯示給使用者,如下所示:

StackOverflow 文件

  • 作為第一個型別引數,PXSetupNotEnteredException 接受將生成預設圖形連結的實體的型別。

  • 第二型別參數列示用於生成連結的記錄的關鍵欄位。在上面的示例中,通過 CD 金鑰導航到倉庫實體。

  • 第一個建構函式引數是錯誤訊息的格式字串。其內部佔位符的編號應從 1 開始:即 The Multiple Warehouses feature and the Transfer order type are activated in the system, in this case an address and a contact must be configured for the '{1}' warehouse.

  • 第二個建構函式引數是指定為第二個泛型引數的鍵欄位的值。在該示例中,將生成的連結是/IN204000.aspx?siteCD=erroneousSite.SiteCDlnk

  • 第三個建構函式引數是要在錯誤訊息中顯示的人類可讀值:...in this case an address and a contact must be configured for the 'erroneousSite.SiteCDinf' warehouse.