Ricerca…


Parametri

Parametro Dettagli
SuiteScript 2.0 -
scriptContext { Object }
scriptContext.newRecord { N/record.Record } Un riferimento al record che viene caricato dal database
scriptContext.type { UserEventType } Il tipo di azione che ha attivato questo evento utente
scriptContext.form { N/ui/serverWidget.Form } Un riferimento al modulo UI che verrà reso
SuiteScript 1.0 -
type { Object } Il tipo di azione che ha attivato questo evento utente
form { nlobjForm } Un riferimento al modulo dell'interfaccia utente che verrà reso
request { nlobjRequest } la richiesta HTTP GET; disponibile solo quando attivato dalle richieste del browser

Osservazioni

beforeLoad

L'evento Before Load viene attivato da qualsiasi operazione di lettura su un record. Ogni volta che un utente, uno script, un'importazione CSV o una richiesta di servizio Web tenta di leggere un record dal database, viene Before Load evento Before Load .

Registra le azioni che attivano un evento beforeLoad :

  • Creare
  • modificare
  • Visualizza / Carica
  • copia
  • Stampare
  • E-mail
  • Un'occhiata

Casi di utilizzo tipici per beforeLoad

  • Modifica il modulo di interfaccia utente prima che l'utente lo veda
  • Imposta valori di campo predefiniti
  • Pre-elaborazione dei dati

Eventi utente non concatenati

Il codice scritto in Eventi utente non attiverà Eventi utente su altri record. Ad esempio, il caricamento del record cliente associato dal record beforeLoad di un record dell'ordine di vendita non attiverà il record del cliente prima del beforeLoad . Anche se stai caricando un altro record di transazione, i suoi Eventi utente non verranno attivati.

NetSuite fa questo per evitare che Eventi Utente si innescino a vicenda in un ciclo infinito. Se avete bisogno di utente Eventi di sparare in una sequenza incatenato, dovranno essere iniettato tra gli eventi di altri tipi di script (ad esempio, RESTlets Suitelets, script programmati).

Event Handler restituisce il void

Il tipo di ritorno del gestore eventi beforeLoad è void . Qualsiasi dato restituito dal gestore eventi non ha alcun effetto sul sistema. Non è necessario restituire nulla dalla funzione del gestore poiché non possiamo effettivamente fare nulla con il suo valore restituito.

Minimo: registra un messaggio prima del caricamento

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

Modifica del modulo dell'interfaccia utente

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

Limita l'esecuzione in base all'azione che ha attivato l'evento utente

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

Limita l'esecuzione in base al contesto che ha attivato l'evento utente

In SuiteScript 1.0, recuperiamo il contesto di esecuzione corrente utilizzando nlapiGetContext().getExecutionContext() , quindi confrontiamo il risultato con le stringhe raw appropriate.

// 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, otteniamo il contesto di esecuzione corrente importando il modulo N/runtime e controllandone la proprietà executionContext . Possiamo quindi confrontare il suo valore con i valori dell'enumerazione runtime.ContextType piuttosto che con le stringhe non 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
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow