수색…


매개 변수

매개 변수 세부
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;
});


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow