netsuite
保存された検索で式の列を活用する
サーチ…
前書き
Netsuite式のOracle SQL CASE文
CASEステートメントを使用すると、別の列にある値(「ORのための私の王国」)に基づいて、条件付きで列に式を表示できます。この例では、トランザクションのステータスが「 Pending Fulfillment
または「 Partially Fulfilled
場合に結果が取得されます。
CASE DECODE( {status}, 'Pending Fulfillment', 1, 'Partially Fulfilled', 1, 0 )
WHEN 1 THEN
式-1
END
正規表現を使用して階層レコード名を解析する
正規表現を使用して、階層的なレコード名を解析します。式は名前の最後のコロンを探します。コロンの後ろに続くもの、または何もない場合は全体の名前を返します。
regexp_substr( {name} , '[^:]*$' )
複数のフィールドを連結して複雑な文字列を作成する
この例では、親レコードの名前、このレコードの名前、およびこのレコードのメモから文字列を作成します。
{createdfrom} || ' ' || {name} || ' ' || {memo}
DIV要素を挿入して列のCSS(スタイルシート)をカスタマイズする
'<div style="font-size:11pt">' ||
式 || '</div>'
ストリング式を破損や注入攻撃から保護する
文字列式フィールドでは、ブラウザにHTMLのような部分文字列を含む値があると考えてください。これが意図的でない限り、価値を腐敗から守ることが重要です。これは注入攻撃を避けるために役立ちます。これは、後で顧客サービス担当者の机上で解釈されるWebオーダーのコメントフィールドにHTMLを入力することを防ぎます。
htf.escape_sc(
式 )
URLを通過するときにフィールド値を破損から保護する
utl_url.escape(
式 )
SQL CASE文で `mainline`の値をテストする
保存された検索式では、 mainline
の可能な値はHTMLコンテキストで役立つように設計されています。 mainline
がtrueの場合、 {mainline}
値は1文字の文字列*
(アスタリスク)です。 mainline
がfalseの場合、 {mainline}
値は6文字の文字列
(改行なしのスペース、文字エンティティ参照としてエンコードされたHTML)。これらの文字列値は、SQLコンテキストの文字列リテラルと比較できます。
CASE
WHEN {mainline} = '*' THEN
expression-when-true
WHEN {mainline} = ' ' THEN
expression-when-false
END
複雑で実世界的な例
次の例では、ここで取り上げるいくつかの手法を組み合わせています。クリックすると、行に関連付けられた受注レコードが開きます。ハイパーリンクは、クリックすると新しいウィンドウまたはタブでレコードを開き、ホールドされたときにツールチップを表示するように設計されています。 URLで使用されるinternalid
フィールドは、URLエンコーディングから保護されています。利用可能な場合、顧客名はHTMLコーディングから保護された同じ列に表示されます。
'<div style="font-size:11pt">'
||
CASE {mainline}
WHEN '*' THEN '<br>' || htf.escape_sc( regexp_substr( {name} , '[^:]*$' ) ) || '<br>'
END
||
'<a alt="" title="Open the order associated with this line." '
||
'href="javascript:void(0);" onClick="window.open('''
||
'https://system.na1.netsuite.com/app/accounting/transactions/transaction.nl?id='
||
utl_url.escape( {internalid} )
||
''' , ''_blank'' )">'
||
{number}
||
'</a>'
||
'</div>'
フィールドに値が指定されている場合と指定されていない場合のレコードをカウントする(欠落していない値と欠損していない値をカウントする)
Oracle SQLのNVL2()
関数を使用すると、フィールドにデータが含まれている場合は1つの値を、フィールドにデータが含まれていない場合は別の値を含む表示列を作成できます。たとえば、エンティティ検索では、プライマリ電子メールアドレスの存在をテキスト表示列に変換します。
NVL2( {email} , 'YES' , 'NO' )
これにより、電子メールアドレスの有無によって小計されたレコード数をカウントできます。
Field: Internal ID
Summary Type: Count
Field: Formula (Text)
Summary Type: Group
Formula: NVL2( {email} , 'YES' , 'NO' )