ディスカッション
AIを用いた自動化で請求書処理を合理化
AIを用いた考察を使用して、計画と予測を迅速化
Join us for complimentary one-day events around the world and step into a future fueled by AI and limitless potential. Explore new breakthroughs, sharpen your skills, and connect with experts who are shaping what’s next. Experience bold keynotes, interactive learning, and connections that span the global NetSuite community. Discover what's next at SuiteConnect Tour 2026.
We’re excited to announce that the 2025 Community Recap is now available! This special recap highlights the amazing contributions and achievements of our members over the year and celebrates the collective success of our community.
Check your personalized recap to see the impact you made in 2025 and how your efforts helped shape our community’s growth and success.
View Your 2025 Community Recap
Thank you to everyone for your passion, collaboration, and support. Here’s to building an even stronger community together in the year ahead!
Season’s greetings to you and yours! As we head into the holidays (December 24 – January 4), we want to take a moment to celebrate the incredible strength and collaboration within our community. Even during the break, you can continue to benefit from connecting with peers, searching related threads, posting your questions, and marking helpful replies as “Accepted” in the Support Community.
Please note our dedicated team will be on reduced coverage during this time, and regular responsiveness will resume on January 5. Wishing you a joyful and restful holiday season!
-The NetSuite Support Community Team
クライアントスクリプトのポストソーシング関数で支払請求書の 経費のラインアイテムを編集し、追加するラインアイテムを選択
適用
製品: 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つ目は「===」の演算子です。
- 「===」とは、「Strict Equality Comparison」(等しさを厳しく比較)と呼ばれています。
- 値とデータタイプを比べて判断します。
- 例
- 0 == false //真
- 0 === false //否:データ型のIntegerとBooleanは不一致
- 1 == "1" //真:数字は数値に自動変換
- 1 === "1" //否:データ型のInteger型とString型は不一致
- null == undefined //真
- null === undefined //否
- '0' == false //真
- '0' === false //否
- 2つ目はスクリプトのエントリーポイントはポストソーシングです。
- 元々、スクリプトは経費サブリストやアイテムサブリストのポストソーシングやフィールド変更後関数を実行しています。
- 支払請求書の何れかのフィールドを更新する場合、アイテムサブリストや経費サブリストにもソーシングされています。
- 例:
- メインラインから以下のサブリストフィールドをソーシングします。
- メインラインの支払請求書番号 → アイテムサブリストの仕入先請求書番号
- メインラインの仕入先 → アイテムサブリストの仕入先リスト
- 以下の手順で問題を再現できます。
- 新しい支払請求書を作成(トランザクション > 買掛金 > 支払請求書を入力)
- メインラインの仕入先を対象仕入先に設定
- メインラインの仕入先からアイテムサブリストの仕入先リストをソーシング
- アイテムサブリストのソーシングでフィールド変更後関数は実行される
- アイテムサブリストのフィールド変更でポストソーシング関数も実行される
- アイテムラインを追加
- 経費ラインアイテムを追加して、必須のフィールドも記入
- 保存を押下すると、「アイテムを追加してください」のエラーが発生
- メインラインから以下のサブリストフィールドをソーシングします。
解決策
カスタマイゼーション > スクリプト > スクリプト へ移動
修正するスクリプトを選択
スクリプトのサブタブでスクリプトファイルを編集
以下のIF条件を修正して、「===」を「==」に変更
function PopulateValue(type, name){ if(type == 'expense' && name == 'account') ...insert code... } else if (type == 'item' && name == 'item'){ ...insert code... } }
スクリプトエディターで保存を押下スクリプトのページで編集ボタンを押下対象関数をポストソーシング関数からフィールド変更後関数へ切り貼りスクリプトページで保存を押下
免責事項
ここに記載されているサンプルコードは、法律で認められている最大限の範囲で、いかなる種類の保証もなく、「現状のまま」で提供されています。Oracle+NetSuite社は、開発者がそれぞれの開発プラットフォームにサンプルコードを実装したり、独自の Web サーバー構成を使用したりする際に、個々の成功を保証するものではありません。
Oracle + NetSuite社は、サンプルコードに関連するデータまたは情報の使用、使用結果、正確性、適時性または完全性に関して、いかなる保証も行わず、表明もしません。Oracle + NetSuite社は、明示的にも黙示的にもすべての保証を放棄し、特に、商品性、特定目的への適合性、およびコード、またはそれに関連するサービスやソフトウェアに関連する保証を放棄します。
Oracle + NetSuite社は、本サンプルコードに関連してお客様または他者が行った行為に起因するいかなる種類の直接的、間接的または結果的な損害または費用についても責任を負いません。