netsuite
Evento de usuario: antes del evento de carga
Buscar..
Parámetros
Parámetro | Detalles |
---|---|
SuiteScript 2.0 | - |
scriptContext | { Object } |
scriptContext.newRecord | { N/record.Record } Una referencia al registro que se está cargando desde la base de datos |
scriptContext.type | { UserEventType } El tipo de acción que desencadenó este evento de usuario |
scriptContext.form | { N/ui/serverWidget.Form } Una referencia al formulario de UI que se procesará |
SuiteScript 1.0 | - |
type | { Object } El tipo de acción que desencadenó este evento de usuario |
form | { nlobjForm } Una referencia al formulario de UI que se procesará |
request | { nlobjRequest } la solicitud HTTP GET; solo disponible cuando es activado por solicitudes del navegador |
Observaciones
beforeLoad
El evento Before Load
se desencadena por cualquier operación de lectura en un registro. Cada vez que un usuario, una secuencia de comandos, una importación de CSV o una solicitud de servicio web intentan leer un registro de la base de datos, se Before Load
evento Before Load
.
Registrar acciones que desencadenan un evento beforeLoad
:
- Crear
- Editar
- Ver / Cargar
- Dupdo
- Impresión
- Vista rápida
Casos de uso típicos para beforeLoad
de la beforeLoad
- Modificar el formulario de interfaz de usuario antes de que el usuario lo vea
- Establecer valores de campo predeterminados
- Preprocesamiento de datos
Eventos de usuario no encadenan
El código escrito en Eventos del usuario no activará ningún evento del Usuario en otros registros. Por ejemplo, cargar el registro de cliente asociado desde la beforeLoad
de un registro de orden de venta no activará la beforeLoad
del registro de beforeLoad
. Incluso si está cargando otro registro de transacción, sus eventos de usuario no se activarán.
NetSuite hace esto para evitar que los eventos de usuario se activen entre sí en un bucle infinito. Si necesita eventos de usuario para disparar en una secuencia encadenada, tendrán que ser inyectado en los eventos entre otros tipos de script (por ejemplo, RESTlets Suitelets, scripts programados).
Event Handler devuelve void
El tipo de retorno del controlador de eventos beforeLoad
es void
. Cualquier dato devuelto por nuestro controlador de eventos no tiene ningún efecto en el sistema. No necesitamos devolver nada de nuestra función de manejador, ya que no podemos hacer nada con su valor devuelto.
Mínimo: registrar un mensaje en antes de cargar
// 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
};
});
Modificar el formulario de la interfaz de usuario
// 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;
});
Restrinja la ejecución en función de la acción que desencadenó el evento de usuario
// 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;
});
Restrinja la ejecución según el contexto que activó el evento de usuario
En SuiteScript 1.0, recuperamos el contexto de ejecución actual utilizando nlapiGetContext().getExecutionContext()
, luego comparamos el resultado con las cadenas en bruto apropiadas.
// 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;
})();
En SuiteScript 2.0, obtenemos el contexto de ejecución actual importando el N/runtime
del módulo y la inspección de su executionContext
propiedad. Luego podemos comparar su valor con los valores de enumeración en tiempo de runtime.ContextType
lugar de cadenas sin 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;
});