Szukaj…


Parametry

Parametr Detale
SuiteScript 2.0 -
scriptContext { Object }
scriptContext.newRecord { N/record.Record } Odwołanie do ładowania rekordu z bazy danych
scriptContext.type { UserEventType } Typ akcji, która wywołała to zdarzenie użytkownika
scriptContext.form { N/ui/serverWidget.Form } Odwołanie do formularza interfejsu użytkownika, który zostanie wyświetlony
SuiteScript 1.0 -
type { Object } Typ akcji, która wywołała to zdarzenie użytkownika
form { nlobjForm } Odwołanie do formularza interfejsu użytkownika, który będzie renderowany
request { nlobjRequest } żądanie HTTP GET; dostępne tylko, gdy są uruchamiane przez żądania przeglądarki

Uwagi

beforeLoad

Zdarzenie Before Load jest wyzwalane przez dowolną operację odczytu na rekordzie. Za każdym razem, gdy użytkownik, skrypt, import CSV lub żądanie usługi internetowej próbuje odczytać rekord z bazy danych, uruchamiane jest zdarzenie Before Load .

Rejestruj działania, które wyzwalają zdarzenie beforeLoad :

  • Stwórz
  • Edytować
  • Wyświetl / Załaduj
  • Kopiuj
  • Wydrukować
  • E-mail
  • Szybki podgląd

Typowe przypadki użycia dla beforeLoad

  • Zmodyfikuj formularz interfejsu użytkownika, zanim użytkownik go zobaczy
  • Ustaw domyślne wartości pól
  • Wstępne przetwarzanie danych

Zdarzenia użytkownika nie są łączone

Kod zapisany w Zdarzeniach użytkownika nie wywoła żadnych zdarzeń użytkownika w innych rekordach. Na przykład załadowanie powiązanego rekordu klienta z przed beforeLoad rekordu zamówienia sprzedaży nie spowoduje uruchomienia rekordu klienta przed beforeLoad . Nawet jeśli ładujesz kolejny rekord transakcji, jego zdarzenia użytkownika nie zostaną uruchomione.

NetSuite robi to, aby zdarzenia użytkownika nie wyzwalały się nawzajem w nieskończonej pętli. Jeśli musisz zdarzenia użytkownika do pożaru w przykuty sekwencji, inne typy skryptów (np RESTlets, Suitelets, zaplanowane scenariusze), będą musiały być wstrzykiwane pomiędzy wydarzeniami.

Program obsługi zdarzeń zwraca wartość void

Typ zwracany przez beforeLoad obsługi zdarzeń beforeLoad jest void . Wszelkie dane zwrócone przez nasz moduł obsługi zdarzeń nie mają wpływu na system. Nie musimy zwracać niczego z naszej funkcji modułu obsługi, ponieważ nie możemy nic zrobić z jej zwróconą wartością.

Minimalna: zaloguj komunikat przed załadowaniem

// 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
    };
});

Modyfikowanie formularza interfejsu użytkownika

// 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;
});

Ogranicz wykonywanie na podstawie akcji, która wywołała Zdarzenie użytkownika

// 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;
});

Ogranicz wykonywanie na podstawie kontekstu, który wywołał zdarzenie użytkownika

W SuiteScript 1.0 pobieramy bieżący kontekst wykonania za pomocą nlapiGetContext().getExecutionContext() , a następnie porównujemy wynik z odpowiednimi nieprzetworzonymi ciągami.

// 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;
})();

W SuiteScript 2.0 otrzymujemy bieżący kontekst wykonania, importując moduł N/runtime i sprawdzając jego właściwość executionContext . Następnie możemy porównać jego wartość z wartościami wyliczenia runtime.ContextType a nie surowymi 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow