netsuite
SuiteScriptによるインライン編集
サーチ…
前書き
インライン編集では、レコードをページにロードしたり、フォームを編集したり、レコードを保存したりせずに、特定のレコードのデータを非常に迅速に変更および更新できます。
NetSuite開発者には、 submitFields
という対応する機能がsubmitFields
ます。 submitFields
機能は、SuiteScript 1.0のnlapiSubmitField
グローバル関数とSuiteScript 2.0のN/record#submitFields
メソッドによって提供されます。
構文
- nlapiSubmitField(recordType、recordId、fieldId、fieldValue);
- nlapiSubmitField(recordType、recordId、fieldIds、fieldValues);
- nlapiSubmitField(recordType、recordId、fieldId、fieldValue、doSourcing);
パラメーター
パラメータ | 詳細 |
---|---|
レコードタイプ | String - 更新されるレコードの種類の内部ID |
recordId | String またはNumber - 更新されるレコードの内部ID |
fieldIds | String またはString[] - 更新されるフィールドの内部ID |
fieldValues | any またはany[] - 指定されたフィールドに設定される対応する値 |
ドソーシング | Boolean - レコード提出時に依存値を供給するかどうか。デフォルトはfalse |
備考
submitFields
機能は、 lookupFields
機能のlookupFields
機能です。
パフォーマンスと制限
submitFields
は、完全なレコードをロードして送信することによって、同じ変更を行うよりもはるかに速く実行し、ガバナンスを少なくします。
1つのフィールドを更新するのと同じコストで複数のフィールドを同時に更新することができます。 submitFields
より多くのフィールドを更新してもガバナンスコストはsubmitFields
しません 。
ただし、各レコードタイプの特定のフィールドのみがインライン編集可能であり、パフォーマンスの節約はこれらのインライン編集可能フィールドにのみ適用されることに注意する必要があります。インライン編集不可能なフィールドでsubmitFields
関数を使用すると、フィールドは正しく更新されますが 、実際にはNetSuiteはレコードをロードして送信するため、時間がかかってガバナンスが向上します。 レコードブラウザーの 「nlapiSubmitField」列を参照することで、フィールドがインライン編集可能かどうかを判断できます。
submitFields
機能は、レコードの本体フィールドにも制限されています。サブリストデータを変更する必要がある場合は、レコードをロードして変更を加え、レコードを提出する必要があります。
参考文献:
- NetSuite Help:「インライン編集とSuiteScriptの概要」
- NetSuite Help:「nlapiSubmitFieldを使用したインライン編集」
- NetSuite Help:「非インライン編集可能フィールドでのnlapiSubmitFieldの使用の結果」
- NetSuite Help:「フィールドAPI」
- NetSuite Help: "record.submitFields(options)"
[1.0]単一フィールドを送信する
/**
* A SuiteScript 1.0 example of using nlapiSubmitField to update a single field on a related record
*/
// From a Sales Order, get the Customer ID
var customerId = nlapiGetFieldValue("entity");
// Set a comment on the Customer record
nlapiSubmitField("customer", customerId, "comments", "This is a comment added by inline editing with SuiteScript.");
[1.0]複数のフィールドを送信する
/**
* A SuiteScript 1.0 example of using nlapiSubmitField to update multiple fields on a related record
*/
// From a Sales Order, get the Customer ID
var customerId = nlapiGetFieldValue("entity");
// Set a Comment and update the Budget Approved field on the Customer record
nlapiSubmitField("customer", customerId,
["comments", "isbudgetapproved"],
["The budget has been approved.", "T"]);
[2.0]単一フィールドを送信する
/**
* A SuiteScript 2.0 example of using N/record#submitFields to update a single field on a related record
*/
require(["N/record", "N/currentRecord"], function (r, cr) {
// From a Sales Order, get the Customer ID
var customerId = cr.get().getValue({"fieldId": "entity"});
// Set a Comment on the Customer record
r.submitFields({
"type": r.Type.CUSTOMER,
"id": customerId,
"values": {
"comments": "This is a comment added by inline editing with SuiteScript."
}
});
});
[2.0]複数のフィールドを送信する
/**
* A SuiteScript 2.0 example of using N/record#submitFields to update multiple fields on a related record
*/
require(["N/record", "N/currentRecord"], function (r, cr) {
// From a Sales Order, get the Customer ID
var customerId = cr.get().getValue({"fieldId": "entity"});
// Set a Comment and check the Budget Approved box on the Customer record
r.submitFields({
"type": r.Type.CUSTOMER,
"id": customerId,
"values": {
"comments": "The budget has been approved.",
"isbudgetapproved": true
}
});
});