2017-05-16 3 views

答えて

1

freemarkerにデータを渡す前に処理/グループ化を行うことができれば、より良い結果が得られます。しかし、単純なオプションではない標準的なトランザクションフォームを拡張するようなことをしている場合。

シーケンス操作を使用してグループ化をシミュレートできます。その後

http://freemarker.org/docs/ref_builtins_sequence.htmlを参照してください):

<#assign seen_style = []> 
<#list record.item?sort_by('custcol_style') as lineitem> 
    <#assign lineStyle = lineitem.custcol_style> 
    <#if seen_style?seq_contains(lineStyle)> 
    <#else> 
     <#assign seen_style = seen_style + [lineStyle]> 
     <#assign styleTotal = 0> 
     <#list record.item?sort_by('custcol_size') as styleItem> 
      <#if lineStyle == styleItem.custcol_style> 
       <#assign styleTotal = styleTotal + styleItem.quantity> 
      </if> 
     </#list> 
     <div>${lineStyle} has ${styleTotal}</div> 
    </#if> 
</#list> 
+0

あなたはあなたの元の質問を編集して、コードを貼り付けることができます。 – bknights

+0

re:すでに取引フォームのデータです。はい、私が解決策を提示しているユースケースです。あなたは明示的ではありませんでしたが、コードから出力を生成している場合は、テンプレートを打つ前にグループ化を行う方が簡単です。あなたがそうしているようには聞こえません。 – bknights

+0

また、 'groupby'はNetsuiteフィールドでもカスタム列フィールドのフォーマットでもありません。 – bknights

2

完全なFreemarkerのマニュアルはhereです。

は、group_by()sum()など一切の組み込み関数はありません、とあなたが一緒になど<#list>ディレクティブを使用して何かを置くことができますが、あなたはlodashのようなライブラリを使用して、JavaScriptでこれをやってはるかに簡単に時間を持っているでしょう。

SuiteScriptとAdvanced PDF/HTMLテンプレートを組み合わせる方法の詳細については、ヘルプセクションのトピックUsing SuiteScript to Apply Advanced Templates to Non-Transaction Recordsを参照するか、SS2.0を使用している場合はN/renderモジュールを参照してください。

関連する問題