netsuite
Zdarzenie użytkownika: przed załadowaniem zdarzenia
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ć
- 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;
});