netsuite
사용자 이벤트 :로드 이벤트 전
수색…
매개 변수
매개 변수 | 세부 |
---|---|
SuiteScript 2.0 | - |
scriptContext | { Object } |
scriptContext.newRecord | { N/record.Record } 데이터베이스에서로드되는 레코드에 대한 참조 |
scriptContext.type | { UserEventType }이 사용자 이벤트를 트리거 한 작업 유형 |
scriptContext.form | { N/ui/serverWidget.Form } 렌더링 될 UI 양식에 대한 참조입니다. |
SuiteScript 1.0 | - |
type | { Object }이 사용자 이벤트를 트리거 한 작업 유형 |
form | { nlobjForm } 렌더링 될 UI 양식에 대한 참조입니다. |
request | HTTP GET 요청을 { nlobjRequest }합니다. 브라우저 요청에 의해 트리거 된 경우에만 사용할 수 있습니다. |
비고
beforeLoad
Before Load
이벤트는 레코드에 대한 읽기 조작에 의해 트리거됩니다. 사용자, 스크립트, CSV 가져 오기 또는 웹 서비스 요청이 데이터베이스에서 레코드를 읽으려고하면 Before Load
이벤트가 Before Load
됩니다.
beforeLoad
이벤트를 트리거하는 액션을 기록합니다.
- 몹시 떠들어 대다
- 편집하다
- 보기 / 불러 오기
- 부
- 인쇄
- 이메일
- 퀵뷰
beforeLoad
일반적인 사용 사례
- 사용자가보기 전에 UI 양식 수정
- 기본 필드 값 설정
- 데이터 사전 처리
사용자 이벤트 가 연결되지 않음
사용자 이벤트로 작성된 코드는 다른 이벤트에서 사용자 이벤트를 트리거하지 않습니다. 예를 들어, 판매 주문 레코드의 beforeLoad
에서 연관된 고객 레코드를로드 해도 고객 레코드의 beforeLoad
트리거되지 않습니다 . 다른 트랜잭션 레코드를로드하는 경우에도 사용자 이벤트는 시작되지 않습니다.
NetSuite는 사용자 이벤트가 무한 루프에서 서로를 유발하지 않도록이 작업을 수행합니다. 연속 된 순서로 실행하기 위해 사용자 이벤트 가 필요하면 다른 스크립트 유형 (예 : RESTlets, Suitelets, Scheduled Scripts)을 이벤트 사이에 삽입해야합니다.
이벤트 처리기가 void
반환합니다.
beforeLoad
이벤트 핸들러의 반환 유형은 void
입니다. 이벤트 처리기에서 반환 된 데이터는 시스템에 아무런 영향을 미치지 않습니다. 반환 값으로는 실제로 아무것도 할 수 없으므로 핸들러 함수에서 아무 것도 반환 할 필요가 없습니다.
최소 :로드 전 메시지 기록
// 1.0
function beforeLoad(type, form, request) {
nlapiLogExecution("DEBUG", "Before Load", "type=" + type);
}
// 2.0
/**
* @NApiVersion 2.x
* @NScriptType UserEventScript
* @NModuleScope SameAccount
*/
define(["N/log"], function (log) {
function beforeLoad(context) {
log.debug({
"title": "Before Load",
"details": "type=" + context.type
});
}
return {
"beforeLoad": beforeLoad
};
});
UI 양식 수정하기
// 1.0
// Revealing Module pattern, structures 1.0 similar to 2.0
var myNamespace = myNamespace || {};
myNamespace.example = (function () {
/** @appliedtorecord employee */
var exports = {};
function beforeLoad(type, form, request) {
showBonusEligibility(form);
}
function showBonusEligibility(form) {
var field = form.addField("custpage_is_bonus_eligible",
"checkbox", "Eligible for Bonus?");
field.setDefaultValue(isEligibleForBonus(nlapiGetNewRecord()) ? "T" : "F");
}
function isEligibleForBonus(rec) {
// Implement actual business rules for bonus eligibility here
return true;
}
exports.beforeLoad = beforeLoad;
return exports;
})();
// 2.0
/**
* @appliedtorecord employee
* @NScriptType UserEventScript
* @NApiVersion 2.x
*/
define(["N/log", "N/ui/serverWidget"], function (log, ui) {
var exports = {};
function beforeLoad(context) {
showBonusEligibility(context.form);
}
function showBonusEligibility(form) {
var field = form.addField({
"id": "custpage_is_bonus_eligible",
"label": "Eligible for Bonus?",
"type": ui.FieldType.CHECKBOX
});
field.defaultValue = (isEligibleForBonus() ? "T" : "F");
}
function isEligibleForBonus(rec) {
// Implement actual business rules for bonus eligibility here
return true;
}
exports.beforeLoad = beforeLoad;
return exports;
});
사용자 이벤트를 트리거 한 작업을 기반으로 실행 제한
// 1.0
// Utilize the type argument and raw Strings to filter your
// execution by the action
function beforeLoad(type, form, request) {
// Don't do anything on APPROVE
// Note that `type` is an Object, so we must use ==, not ===
if (type == "approve") {
return;
}
// Continue with normal business logic...
}
// 2.0
/**
* @appliedtorecord employee
* @NScriptType UserEventScript
* @NApiVersion 2.x
*/
define([], function () {
var exports = {};
// Utilize context.type value and context.UserEventType enumeration
// to filter your execution by the action
function beforeLoad(context) {
// Don't do anything on APPROVE
if (context.type === context.UserEventType.APPROVE) {
return;
}
// Continue with normal business logic...
}
exports.beforeLoad = beforeLoad;
return exports;
});
사용자 이벤트를 트리거 한 컨텍스트를 기반으로 실행을 제한합니다.
SuiteScript 1.0에서는 nlapiGetContext nlapiGetContext().getExecutionContext()
사용하여 현재 실행 컨텍스트를 검색 한 다음 결과를 적절한 원시 문자열과 비교합니다.
// 1.0 in Revealing Module pattern
var myNamespace = myNamespace || {};
myNamespace.example = (function () {
var exports = {};
function beforeLoad(type, form, request) {
showBonusEligibility(form);
}
function showBonusEligibility(form) {
// Doesn't make sense to modify UI form when the request
// did not come from the UI
var currentContext = nlapiGetContext().getExecutionContext();
if (!wasTriggeredFromUi(currentContext)) {
return;
}
// Continue with form modification...
}
function wasTriggeredFromUi(context) {
// Current context must be compared to raw Strings
return (context === "userinterface");
}
function isEligibleForBonus() {
return true;
}
exports.beforeLoad = beforeLoad;
return exports;
})();
SuiteScript 2.0에서는 N/runtime
모듈을 가져 와서 executionContext
속성을 검사하여 현재 실행 컨텍스트를 가져옵니다. 그런 다음 해당 값을 원시 문자열이 아닌 runtime.ContextType
열거 형 값과 비교할 수 있습니다.
// 2.0
/**
* @NScriptType UserEventScript
* @NApiVersion 2.x
*/
define(["N/ui/serverWidget", "N/runtime"], function (ui, runtime) {
var exports = {};
function beforeLoad(scriptContext) {
showBonusEligibility(scriptContext.form);
}
function showBonusEligibility(form) {
// Doesn't make sense to modify the form if the
if (!wasTriggeredFromUi(runtime.executionContext)) {
return;
}
// Continue with form modification...
}
function wasTriggeredFromUi(context) {
// Context can be compared to enumeration from runtime module
return (context === runtime.ContextType.USER_INTERFACE);
}
exports.beforeLoad = beforeLoad;
return exports;
});