Zoeken…


parameters

Parameter Details
SuiteScript 2.0 -
scriptContext { Object }
scriptContext.newRecord { N/record.Record } Een verwijzing naar het record dat uit de database wordt geladen
scriptContext.type { UserEventType } Het actietype dat deze gebruikersgebeurtenis heeft geactiveerd
scriptContext.form { N/ui/serverWidget.Form } Een verwijzing naar het UI-formulier dat wordt weergegeven
SuiteScript 1.0 -
type { Object } Het actietype dat deze gebruikersgebeurtenis heeft geactiveerd
form { nlobjForm } Een verwijzing naar het UI-formulier dat wordt weergegeven
request { nlobjRequest } het HTTP GET-verzoek; alleen beschikbaar wanneer geactiveerd door browserverzoeken

Opmerkingen

beforeLoad

De gebeurtenis Before Load wordt geactiveerd door elke leesbewerking op een record. Telkens wanneer een gebruiker, een script, een CSV-import of een webserviceaanvraag een record uit de database probeert te lezen, wordt de gebeurtenis Before Load geactiveerd.

Neem acties op die een beforeLoad gebeurtenis activeren:

  • creëren
  • Bewerk
  • Bekijken / laden
  • Kopiëren
  • Afdrukken
  • E-mail
  • Snelle kijk

Typische use cases voor beforeLoad

  • Wijzig het UI-formulier voordat de gebruiker het ziet
  • Stel standaard veldwaarden in
  • Voorbewerking van gegevens

Gebruikersevents ketenen niet

Code geschreven in Gebruikersgebeurtenissen zal geen Gebruikersgebeurtenissen in andere records activeren. Bijvoorbeeld, het laden van de bijbehorende klant record uit de beforeLoad van een verkooporder plaat zal niet leiden tot de klant record beforeLoad . Zelfs als u een ander transactierecord laadt, worden de gebruikersgebeurtenissen niet geactiveerd.

NetSuite doet dit om te voorkomen dat gebruikersgebeurtenissen elkaar in een oneindige lus activeren. Als u wel gebruikersevenementen nodig hebt om in een kettingreeks te schieten, moeten andere scripttypen (bijv. RESTlets, Suitelets, Geplande scripts) tussen de gebeurtenissen worden geïnjecteerd.

Event Handler keert void terug

Het beforeLoad van de gebeurtenishandler beforeLoad is void . Gegevens die worden geretourneerd door onze gebeurtenishandler hebben geen effect op het systeem. We hoeven niets te retourneren vanuit onze handlerfunctie, omdat we eigenlijk niets kunnen doen met de geretourneerde waarde.

Minimaal: een bericht aanmelden vóór laden

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

Het UI-formulier wijzigen

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

Beperk de uitvoering op basis van de actie die de gebruikersgebeurtenis heeft geactiveerd

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

Beperk de uitvoering op basis van de context die de gebruikersgebeurtenis heeft geactiveerd

In SuiteScript 1.0 halen we de huidige uitvoeringscontext op met nlapiGetContext().getExecutionContext() en vergelijken we het resultaat met de juiste onbewerkte tekenreeksen.

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

In SuiteScript 2.0 krijgen we de huidige uitvoeringscontext door de N/runtime module te importeren en de eigenschap executionContext inspecteren. We kunnen de waarde vervolgens vergelijken met de waarden van de runtime.ContextType opsomming in plaats van onbewerkte tekenreeksen.

// 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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow