ディスカッション

スイート全体に組み込まれたAI機能は、データをより迅速に分析し、より優れた意思決定を促進する独自の考察を生成できるようにすることで、生産性を向上させ、リーダーに利便性をもたらします。オラクルのAI機能がどのように役立つかについては、これらのオンデマンド・ウェビナーをご覧ください。

AIを用いた自動化で請求書処理を合理化

AIを用いた考察を使用して、計画と予測を迅速化
NetSuiteの保存検索やレポートをマスターするための究極のガイドである分析センターを使用して、データの力を最大限に活用しましょう。複雑さを単純化し、組織の真の可能性を解き放ちます。今すぐ分析センターに参加して、新たな高みを目指しましょう!
NetSuite Release 2025.1リリース・ノートは、こちらからダウンロードできます。
SuiteWorld 2025年10月6日~9日 アジェンダビルダーが公開されました!

SuiteWorldまであと41日となりました。以下の最新情報をご確認ください。
アジェンダビルダー公開
SuiteWorld On Airの登録受付開始
新しいNetSuite Prompt Studioコンテスト
その他の最新情報も!

詳細はこのスレッドでご確認ください!

クライアントスクリプトのポストソーシング関数で支払請求書の 経費のラインアイテムを編集し、追加するラインアイテムを選択

編集済:Jun 2, 2025 2:47PM SuiteCloud / カスタマイズ

適用

製品:  NetSuite 2022.1

シナリオ

クライアントスクリプトのポストソーシングで支払請求書のメインボディーのラインフィールドを更新しています。そのスクリプトで、フィールドは正常に記入できたが、経費サブリストのみでラインを記入して保存すれば、「アイテムサブリストにラインを追加してください」のエラーが発生してしまいます。ユーザーは手動でアイテムサブリストの記入をキャンセルして保存できるようになります。

修正前のスクリプトは以下です。

 
function PopulateValue(type, name) { 
     if(type === 'expense' && name === 'account') { 
           var x = nlapiGetFieldValue('memo'); 
           var y = nlapiGetFieldValue('tranid'); 
           nlapiSetCurrentLineItemValue('expense', 'custcol_memo', x); 
           nlapiSetCurrentLineItemValue('expense', 'custcol_tranid', y); 
          
    } 
     else if (type === 'item' && name === 'item') { 
           var x2 = nlapiGetFieldValue('memo'); 
           var y2 = nlapiGetFieldValue('tranid'); 
           nlapiSetCurrentLineItemValue('item', 'custcol_memo', x2); 
           nlapiSetCurrentLineItemValue('item', 'custcol_tranid', y2); 
          
    } 
} 

上記コードで懸念は2つあります。
  1. 1つ目は「===」の演算子です。
    • 「===」とは、「Strict Equality Comparison」(等しさを厳しく比較)と呼ばれています。
    • 値とデータタイプを比べて判断します。
      • 0 == false //真
      • 0 === false //否:データ型のIntegerとBooleanは不一致
      • 1 == "1" //真:数字は数値に自動変換
      • 1 === "1" //否:データ型のInteger型とString型は不一致
      • null == undefined //真
      • null === undefined //否
      • '0' == false //真
      • '0' === false //否
  2. 2つ目はスクリプトのエントリーポイントはポストソーシングです。
    • 元々、スクリプトは経費サブリストやアイテムサブリストのポストソーシングやフィールド変更後関数を実行しています。
    • 支払請求書の何れかのフィールドを更新する場合、アイテムサブリストや経費サブリストにもソーシングされています。
    • 例:
      • メインラインから以下のサブリストフィールドをソーシングします。
        1. メインラインの支払請求書番号 → アイテムサブリストの仕入先請求書番号
        2. メインラインの仕入先 → アイテムサブリストの仕入先リスト
      • 以下の手順で問題を再現できます。
        1. 新しい支払請求書を作成(トランザクション > 買掛金 > 支払請求書を入力)
        2. メインラインの仕入先を対象仕入先に設定
        3. メインラインの仕入先からアイテムサブリストの仕入先リストをソーシング
        4. アイテムサブリストのソーシングでフィールド変更後関数は実行される
        5. アイテムサブリストのフィールド変更でポストソーシング関数も実行される
        6. アイテムラインを追加
        7. 経費ラインアイテムを追加して、必須のフィールドも記入
        8. 保存を押下すると、「アイテムを追加してください」のエラーが発生
 
ポストソーシングとは、スイートアンサー記事ID:10606を参照してください。



解決策

  1. カスタマイゼーション > スクリプト > スクリプト へ移動

  2. 修正するスクリプトを選択

  3. スクリプトのサブタブでスクリプトファイルを編集

  4. 以下のIF条件を修正して、「===」を「==」に変更

     
    function PopulateValue(type, name){ 
     if(type == 'expense' && name == 'account') 
      ...insert code... 
     } 
     else if (type == 'item' && name == 'item'){ 
      ...insert code... 
     } 
    }
  5. スクリプトエディターで保存を押下

  6. スクリプトのページで編集ボタンを押下

  7. 対象関数をポストソーシング関数からフィールド変更後関数へ切り貼り

  8. スクリプトページ保存を押下



免責事項

ここに記載されているサンプルコードは、法律で認められている最大限の範囲で、いかなる種類の保証もなく、「現状のまま」で提供されています。Oracle+NetSuite社は、開発者がそれぞれの開発プラットフォームにサンプルコードを実装したり、独自の Web サーバー構成を使用したりする際に、個々の成功を保証するものではありません。

Oracle + NetSuite社は、サンプルコードに関連するデータまたは情報の使用、使用結果、正確性、適時性または完全性に関して、いかなる保証も行わず、表明もしません。Oracle + NetSuite社は、明示的にも黙示的にもすべての保証を放棄し、特に、商品性、特定目的への適合性、およびコード、またはそれに関連するサービスやソフトウェアに関連する保証を放棄します。

Oracle + NetSuite社は、本サンプルコードに関連してお客様または他者が行った行為に起因するいかなる種類の直接的、間接的または結果的な損害または費用についても責任を負いません。

ようこそ!

サインイン

完全な詳細を表示するには、サインインしてください。

登録

アカウントがありませんか?ここをクリックして始めましょう!

リーダーボード

コミュニティの達人

第3四半期 (7月~9月 2025年)

今週のリーダー

今月のリーダー

歴代リーダー