NetSuite Advanced PDF - 使用记录中的多选字段过滤项目表列表

Posted

技术标签:

【中文标题】NetSuite Advanced PDF - 使用记录中的多选字段过滤项目表列表【英文标题】:NetSuite Advanced PDF - Filter the item table list using multiselect field on record 【发布时间】:2021-10-19 17:03:13 【问题描述】:

希望您能提供帮助。我目前正在开发一个高级 PDF 模板,该模板根据在销售订单的多选字段中选择的值过滤项目表。

这是我的尝试,不断抛出意外错误:

参考代码中的黄色高亮部分。删除这些后一切正常。

如果我理解正确,多选值返回一个数组;因此理论上我应该能够使用“#LIST”指令。

为了简要解释代码,我试图:

循环在多选字段中找到的每个值。 将此值与第二个循环中的每个列字段进行比较。 如果两个值都匹配,则打印该行,否则跳过。

非常感谢任何想法或建议。

非常感谢!

【问题讨论】:

请始终包含异常消息! 不幸的是,错误是“意外错误”! 呃。如果您看不到实际的错误消息,则很难使用模板。你确定你不能从任何地方得到它吗?就像您可以访问日志一样?无论如何……一个肮脏的把戏。将您的模板放入此<#attempt>... your template here ...<#recover>FAILED:<pre>$.error</pre></#attempt>。然后模板的输出将包含错误消息。 抱歉耽搁了。不幸的是,即使使用您分享的技巧,在单击工单上的打印按钮时,我仍然会收到“意外错误”。您知道如何检查多选字段是否确实被识别为“序列”,以便可以在 指令中正确使用它吗? #attempt 不起作用可能意味着模板有一些语法错误,因此甚至无法开始执行。你可以在try.freemarker.apache.org 上试试吗?测试某个东西是否是一个序列:$something?is_sequence?c。 (或者你可能真的想要$something?is_enumerable?c。) 【参考方案1】:

想出了这个问题的答案。希望这对其他人有所帮助。

以下是我为从多选列表中过滤所做的更改:

我首先为多选字段分配了“?word_list”。这会将整个多选字段作为数组输出:[1, 2, 3, 4, 5]

然后我在 'list' 指令中使用它,最后确保序列中的每个值都是一个字符串,因此可以与另一个字符串变量进行比较。

【讨论】:

以上是关于NetSuite Advanced PDF - 使用记录中的多选字段过滤项目表列表的主要内容,如果未能解决你的问题,请参考以下文章

NetSuite Advanced PDF - 使用记录中的多选字段过滤项目表列表

Netsuite 高级 PDF

在变量 freemarker 中显示引号 - netsuite 高级 pdf

Netsuite 高级 PDF/HTML 模板的脚本问题

Netsuite 账户报表 PDF/HTML 模板

Netsuite 高级 PDF BOM