netsuite
Användarhändelse: Innan du laddar händelsen
Sök…
parametrar
Parameter | detaljer |
---|---|
SuiteScript 2.0 | - |
scriptContext | { Object } |
scriptContext.newRecord | { N/record.Record } En referens till posten som laddas från databasen |
scriptContext.type | { UserEventType } UserEventType som utlöste den här användarhändelsen |
scriptContext.form | { N/ui/serverWidget.Form } En referens till UI-formuläret som kommer att ges |
SuiteScript 1.0 | - |
type | { Object } Åtgärdstyp som utlöste den här användarhändelsen |
form | { nlobjForm } En referens till UI-formuläret som kommer att återges |
request | { nlobjRequest } HTTP GET-begäran; endast tillgängligt när det utlöses av webbläsarförfrågningar |
Anmärkningar
beforeLoad
Händelsen Before Load
utlöses av alla läsoperationer på en post. Varje gång en användare, ett skript, en CSV-import eller en webbtjänstförfrågan försöker läsa en post från databasen blir händelsen Before Load
avbruten.
Spela in åtgärder som utlöser en beforeLoad
händelse:
- Skapa
- Redigera
- Visa / ladda
- Kopia
- Skriva ut
- E-post
- Snabbtitt
Typiska användningsfall för beforeLoad
- Ändra UI-formuläret innan användaren ser det
- Ställ in standardfältvärden
- Förbehandling av data
Användarhändelser kedjer inte
Kod skriven i användarhändelser kommer inte att utlösa några användarhändelser i andra poster. Att till exempel ladda den tillhörande kundposten från beforeLoad
i en försäljningsorderpost kommer inte att utlösa beforeLoad
. Även om du laddar en annan transaktionspost kommer inte användarhändelserna att avfyras.
NetSuite gör detta för att undvika att användarhändelser utlöser varandra i en oändlig slinga. Om du behöver användarhändelser till brand i en Chained sekvens kommer andra typer script (t.ex. RESTlets, Suitelets, schemalagda skript) måste sprutas in mellan händelserna.
Event Handler återgår void
beforeLoad
händelsehanteraren föreLadd är void
. All information som returneras från vår händelsehanterare har ingen effekt på systemet. Vi behöver inte returnera någonting från vår hanterarfunktion eftersom vi faktiskt inte kan göra något med dess returnerade värde.
Minimal: Logga in ett meddelande om Innan du laddar
// 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
};
});
Ändra UI-formuläret
// 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;
});
Begränsa körningen baserat på åtgärden som utlöste användarhändelsen
// 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;
});
Begränsa körningen baserat på det sammanhang som utlöste användarhändelsen
I SuiteScript 1.0 hämtar vi det aktuella exekveringssättet med nlapiGetContext().getExecutionContext()
, jämför vi resultatet med lämpliga råa strängar.
// 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;
})();
I SuiteScript 2.0 får vi den aktuella exekveringssituationen genom att importera N/runtime
modulen och inspektera den executionContext
egenskapen. Vi kan sedan jämföra dess värde med värdena på runtime.ContextType
uppräkning snarare än rå strängar.
// 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;
});