显示要求用户输入实体数据的错误

由于用户尚未输入所有必要信息,用户经常在业务流程无法完成的情况下出现。

这种情况的一个示例是当用户尝试创建缺少客户地址的下单订单时。

根据 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.