netsuite
속물로 일하는 중
수색…
소개
NetSuite 레코드는 본문 필드와 하위 목록으로 나뉩니다. 하위 목록에는 정적, 편집기, 인라인 편집기 및 목록의 네 가지 유형이 있습니다.
Sublist API를 사용하여 광고 항목을 추가, 삽입, 수정 및 삭제할 수 있습니다.
SuiteScript를 지원하는 하위 목록에 대한 자세한 내용은 NetSuite 도움말 페이지의 "Scriptable Sublists"를 참조하십시오.
비고
하부 조직 지수
하위 목록의 각 광고 항목에는이를 참조하기 위해 사용할 수있는 색인이 있습니다.
SuiteScript 1.0, 이들 지표는 1
첫번째 광고 항목 인덱스 갖도록, 기반을 1
번째 인덱스를 갖는, 2
등, 및.
SuiteScript 2.0에서 이러한 인덱스는 0
기반이므로 첫 번째 항목에는 인덱스 0
이 있고 두 번째 항목에는 인덱스 1
이있는 식으로 계속됩니다. 물론 자바 스크립트를 비롯한 대부분의 언어에서 Array 인덱싱과 더 밀접한 관련이 있습니다.
표준 대 동적 모드
하위 목록과 상호 작용하기 위해 사용하는 API는 표준 또는 동적 모드에서 레코드로 작업하는지 여부에 따라 다릅니다.
표준 모드 API는 작업 할 행의 색인을 해당 함수의 매개 변수로 제공하기 만하면됩니다.
동적 모드 API는 다음과 같은 패턴을 따릅니다.
- 우리가 작업 할 선을 선택하십시오.
- 선택한 선을 원하는대로 수정하십시오.
- 행의 변경 내용 커밋
동적 모드에서 수정 한 각 행에 변경 사항을 커밋하지 않으면 해당 변경 사항은 레코드가 저장 될 때 반영되지 않습니다.
제한 사항
SuiteScript를 통해 하위 목록 데이터를 처리하려면 레코드의 메모리에 참조가 있어야합니다. 즉, 레코드를 스크립트 컨텍스트에서 검색해야하거나 데이터베이스에서 레코드를로드해야합니다.
lookup 또는 submitFields 기능을 통해 하위 목록을 사용할 수 없습니다 .
정적 하위 목록은 SuiteScript를 전혀 지원하지 않습니다.
참고 문헌 :
- NetSuite Help : "서브리스트 란 무엇입니까?"
- NetSuite Help : "서브 목록 유형"
- NetSuite Help : "스크립트 가능한 서브 목록"
- NetSuite Help : "서브리스트 광고 항목으로 작업하기"
- NetSuite Help : "서브리스트 API"
- NetSuite Help : "동적 모드로 레코드 작업하기"
[1.0] sublist에 몇 줄입니까?
// How many Items does a Sales Order have...
// ... if we're in the context of a Sales Order record
var itemCount = nlapiGetLineItemCount("item");
// ... or if we've loaded the Sales Order
var order = nlapiLoadRecord("salesorder", 123);
var itemCount = order.getLineItemCount("item");
[1.0] 표준 모드의 서브 목록
// Working with Sublists in Standard mode ...
// ... if the record is in context:
// Add item 456 with quantity 10 at the end of the item sublist
var nextIndex = nlapiGetLineItemCount("item") + 1;
nlapiSetLineItemValue("item", "item", nextIndex, 456);
nlapiSetLineItemValue("item", "quantity", nextIndex, 10);
// Inserting item 234 with quantity 3 at the beginning of a sublist
nlapiInsertLineItem("item", 1);
nlapiSetLineItemValue("item", "item", 1, 234);
nlapiSetLineItemValue("item", "quantity", 1, 3);
// Insert item 777 with quantity 2 before the end of the last item
var itemCount = nlapiGetLineItemCount("item");
nlapiInsertLineItem("item", itemCount);
nlapiSetLineItemValue("item", "item", itemCount, 777);
nlapiSetLineItemValue("item", "quantity", itemCount, 2);
// Remove the first line item
nlapiRemoveLineItem("item", 1);
// Remove the last line item
nlapiRemoveLineItem("item", nlapiGetLineItemCount("item"));
// ... or if we have a reference to the record (rec):
// Add item 456 with quantity 10 at the end of the item sublist
var nextIndex = rec.getLineItemCount("item") + 1;
rec.setLineItemValue("item", "item", nextIndex, 456);
rec.setLineItemValue("item", "quantity", nextIndex, 10);
// Insert item 777 with quantity 3 at the beginning of the sublist
rec.insertLineItem("item", 1);
rec.setLineItemValue("item", "item", 1, 777);
rec.setLineItemValue("item", "quantity", 1, 3);
// Remove the first line
rec.removeLineItem("item", 1);
// Remove the last line
rec.removeLineItem("item", rec.getLineItemCount("item"));
[1.0] 동적 모드의 서브 목록
// Adding a line item to the end of a sublist in Dynamic Mode...
// ... if the record is in context:
nlapiSelectNewLineItem("item");
nlapiSetCurrentLineItemValue("item", "item", 456);
nlapiSetCurrentLineItemValue("item", "quantity", 10);
nlapiCommitLineItem("item");
// ... or if we have a reference to the record (rec):
rec.selectNewLineItem("item");
rec.setCurrentLineItemValue("item", "item", 456);
rec.setCurrentLineItemValue("item", "quantity", 10);
rec.commitLineItem("item");
[1.0] 광고 항목 찾기
// Which line has item 456 on it...
// ... if we're in the context of a record
var index = nlapiFindLineItemValue("item", "item", 456);
if (index > -1) {
// we found it...
} else {
// item 456 is not in the list
}
// ... or if we have a reference to the record (rec)
var index = rec.findLineItemValue("item", "item", 456);
if (index > -1) {
// we found it on line "index"...
} else {
// item 456 is not in the list
}
[2.0] 하위 목록에 몇 줄입니까?
// How many lines in a sublist in SuiteScript 2.0...
require(["N/record"], function (r) {
var rec = r.load({
"type": r.Type.SALES_ORDER,
"id": 123
});
// How many lines are on the Items sublist?
var itemCount = rec.getLineCount({"sublistId": "item"});
});
[2.0] 표준 모드의 서브 목록
// Working with a sublist in Standard Mode in SuiteScript 2.0...
require(["N/record"], function (r) {
var rec = r.create({
"type": r.Type.SALES_ORDER,
"isDynamic": false
});
// Set relevant body fields ...
// Add line item 456 with quantity 10 at the beginning of the Items sublist
rec.setSublistValue({"sublistId": "item", "fieldId": "item", "value": 456, "line": 0});
rec.setSublistValue({"sublistId": "item", "fieldId": "quantity", "value": 10, "line": 0});
// Insert line item 238 with quantity 5 at the beginning of the Items sublist
rec.insertLine({"sublistId": "item", "line": 0});
rec.setSublistValue({"sublistId": "item", "fieldId": "item", "value": 238, "line": 0});
rec.setSublistValue({"sublistId": "item", "fieldId": "quantity", "value": 5, "line": 0});
// Insert line item 777 with quantity 3 before the last line of the Items sublist
var lastIndex = rec.getLineCount({"sublistId": "item"}) - 1; // 2.0 sublists have 0-based index
rec.insertLine({"sublistId": "item", "line": lastIndex}); // The last line will now actually be at lastIndex + 1
rec.setSublistValue({"sublistId": "item", "fieldId": "item", "value": 777, "line": lastIndex});
rec.setSublistValue({"sublistId": "item", "fieldId": "quantity", "value": 3, "line": lastIndex});
// Remove the first line
rec.removeLine({"sublistId": "item", "line": 0});
// Remove the last line
rec.removeLine({"sublistId": "item", "line": rec.getLineCount({"sublistId": "item"}) - 1});
rec.save();
});
[2.0] 동적 모드의 서브리스트
// Working with Sublists in Dynamic Mode in SuiteScript 2.0...
require(["N/record"], function (r) {
var rec = r.create({
"type": r.Type.SALES_ORDER,
"isDynamic": true
});
// Set relevant body fields ...
// Add line item 456 with quantity 10 at the end of the Items sublist
var itemCount = rec.selectNewLine({"sublistId": "item"});
rec.setCurrentSublistValue({"sublistId": "item", "fieldId": "item", "value": 456});
rec.setCurrentSublistValue({"sublistId": "item", "fieldId": "quantity", "value": 10});
rec.commitLine({"sublistId": "item"});
// Insert line item 378 with quantity 2 at the beginning of the Items sublist
rec.insertLine({"sublistId": "item", "line": 0});
rec.selectLine({"sublistId": "item", "line": 0});
rec.setCurrentSublistValue({"sublistId": "item", "fieldId": "item", "value": 378});
rec.setCurrentSublistValue({"sublistId": "item", "fieldId": "quantity", "value": 2});
rec.commitLine({"sublistId": "item"});
// Insert line item 777 with quantity 3 before the last line of the Items sublist
var lastIndex = rec.getLineCount({"sublistId": "item"}) - 1; // 2.0 sublists have 0-based index
rec.insertLine({"sublistId": "item", "line": lastIndex}); // The last line will now actually be at lastIndex + 1
rec.selectLine({"sublistId": "item", "line": lastIndex});
rec.setCurrentSublistValue({"sublistId": "item", "fieldId": "item", "value": 777});
rec.setCurrentSublistValue({"sublistId": "item", "fieldId": "quantity", "value": 3});
rec.commitLine({"sublistId": "item"});
// Remove the first line
rec.removeLine({"sublistId": "item", "line": 0});
// Remove the last line
rec.removeLine({"sublistId": "item", "line": rec.getLineCount({"sublistId": "item"}) - 1});
rec.save();
});
[2.0] 광고 항목 찾기
// Finding a specific line item in SuiteScript 2.0...
require(["N/record"], function (r) {
var rec = r.load({
"type": r.Type.SALES_ORDER,
"id": 123
});
// Find the line that contains item 777
var index = rec.findSublistLineWithValue({"sublistId": "item", "fieldId": "item", "value": 777});
// find returns -1 if the item isn't found
if (index > -1) {
// we found it on line "index"
} else {
// item 777 is not in the list
}
});