You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetSuite:高级PDF/HTML模板——变量声明方法咨询

在NetSuite高级PDF/HTML模板中声明并使用变量的方法

嘿,我来帮你搞定这个问题!NetSuite的高级PDF/HTML模板基于FreeMarker模板语言,所以我们可以用FreeMarker的语法来声明变量、处理空值逻辑。下面一步步给你讲清楚:

1. 基础变量声明与空值处理

首先,你可以用<#assign>标签来声明变量,同时用FreeMarker的空值处理语法确保字段为空时不会报错或显示乱码。

比如针对你提到的三个字段,我们可以逐个声明变量:

<!-- 声明变量,为空时设为空字符串 -->
<#assign shipAddressee = record.createdfrom.entity.shipaddressee!'' />
<#assign shipCountry = record.createdfrom.entity.shipcountry!'' />
<#assign shipCity = record.shipcity!'' />

这里的!''是FreeMarker的默认值语法:如果前面的字段为空(或不存在),就用空字符串替代,避免模板渲染出错。

2. 非空判断后展示变量

接下来,你可以判断变量是否非空,再选择性展示,这样就只会显示有值的字段:

<!-- 逐个展示非空字段,自动处理空格 -->
<#if shipAddressee?has_content>${shipAddressee}</#if>
<#if shipCountry?has_content><#if shipAddressee?has_content> </#if>${shipCountry}</#if>
<#if shipCity?has_content><#if shipAddressee?has_content || shipCountry?has_content> </#if>${shipCity}</#if>

这里的?has_content是FreeMarker的内置方法,用来判断变量是否有实际内容(比直接判断!= ''更严谨,能处理null和空字符串的情况)。

3. 进阶:拼接成单个地址变量

如果你想把所有非空字段拼接成一个完整的地址变量,再统一展示,可以这样写:

<!-- 初始化空的地址变量 -->
<#assign shippingAddress = '' />

<!-- 处理createdfrom里的字段(先判断createdfrom是否存在,避免报错) -->
<#if record.createdfrom?has_content && record.createdfrom.entity?has_content>
  <#if record.createdfrom.entity.shipaddressee?has_content>
    <#assign shippingAddress += record.createdfrom.entity.shipaddressee />
  </#if>
  <#if record.createdfrom.entity.shipcountry?has_content>
    <!-- 如果已有内容,先加空格再拼接 -->
    <#assign shippingAddress += (shippingAddress != '' ? ' ' : '') + record.createdfrom.entity.shipcountry />
  </#if>
</#if>

<!-- 处理shipcity字段 -->
<#if record.shipcity?has_content>
  <#assign shippingAddress += (shippingAddress != '' ? ' ' : '') + record.shipcity />
</#if>

<!-- 最终展示拼接好的地址 -->
${shippingAddress}

这个写法的好处是:

  • 先判断record.createdfrom是否存在(避免如果单据没有来源单据时模板报错)
  • 自动处理字段间的空格,不会出现多个连续空格的情况
  • 只保留有值的字段,空字段会被自动忽略

注意事项

  • 确保字段路径正确:你用的record.createdfrom.entity.shipaddressee要确认在NetSuite的记录结构中是有效的(比如有些单据的createdfrom可能没有entity属性,需要根据实际单据类型调整)
  • 所有FreeMarker语法要放在<#...>或${...}标签里,不要直接写在HTML文本中
  • 在NetSuite模板编辑器中测试时,可以用预览功能查看实际渲染效果,及时调整逻辑

内容的提问来源于stack exchange,提问作者Saizou

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:52:49