【问题标题】:How to catch an exception in a Netsuite saved search formula?如何在 Netsuite 保存的搜索公式中捕获异常?
【发布时间】:2020-04-06 21:53:13
【问题描述】:

我有一个保存的搜索,它查看销售订单上的自定义文本字段。自定义字段应包含 ISO 日期。我想获取该日期大于今天的所有记录。我的第一次尝试是使用下面的公式尝试Formula(Date),条件“大于今天”

TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD')

但是,当我尝试进行搜索时,这给了我一个“意外错误”。我发现这是因为并非每条记录都有 ISO 日期,有些是空的,有些已被编辑以包含一些非日期数据。似乎如果任何行返回错误,则整个保存的搜索都会失败。因此,我想从我的搜索中排除任何不解析为日期的内容。但是,我找不到从 TO_DATE 函数中捕获异常的方法。目前我有:

CASE WHEN REGEXP_LIKE({custbody_est_delivery},'(\d{4})-(\d{2})-(\d{2})') THEN TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD')ELSE TO_DATE('2099-12-31', 'YYYY-MM-DD') END

这行得通,但它是一个可怕的 hack,如果有人例如,它会失败。写在'9999-99-99'的字段中。

如何在 Netsuite 保存的搜索公式中捕获异常?我正在寻找类似下面的伪代码:

IFERROR(TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD'), <do something sensible>)

【问题讨论】:

    标签: netsuite saved-searches


    【解决方案1】:

    您可以使用NVL2 函数有条件地处理任何空字段值。

    例如

    NVL2({custbody_est_delivery}, TO_DATE({custbody_est_delivery}, 'YYYY-MM-DD'), '')
    

    请参阅标题为 SQL Expressions 的帮助页面,了解您可以使用的所有公式函数。

    我个人认为任何无效日期的字段值都是数据问题,应该通过大规模更新或 CSV 导入来纠正,并且应该将验证规则添加到您的自定义字段中,这样就不允许出现无效日期。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多