netsuite
Evento utente: prima di caricare evento
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
- 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;
});