- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要为子列表中名为“Enviar Selección”的按钮创建一个事件......
这是我的套房************************
/**
* @NApiVersion 2.0
* @NScriptType suitelet
* @NModuleScope SameAccount
*/
define(['N/ui/serverWidget', 'N/search', 'N/log', 'N/ui/dialog'],
function(serverWidget, search, log, dialog) {
//funcion de Contenido
function onRequest(context) {
// llamo la busquEda guardada
var busqueda = search.load({ id: 'customsearch_axa_lista_prev4' });
// creao formulario
var formulario = serverWidget.createForm({ title: 'Formulario de Busqueda' });
// creamos dos grupos de busqueda // grupo 1
var GrupoBusqueda = formulario.addFieldGroup({ id: 'GrupoBusqueda', label: 'Grupo de Busqueda' });
GrupoBusqueda.isSingleColumn = true;
// creamos los filtro de busqueda form
formulario.addField({ id: 'codigobarra', type: serverWidget.FieldType.TEXT, label: 'Codigo de Barras', container: 'GrupoBusqueda' });
formulario.addField({ id: 'nombrelinea', type: serverWidget.FieldType.TEXT, label: 'Linea de Producto', container: 'GrupoBusqueda' });
formulario.addField({ id: 'nombrelista', type: serverWidget.FieldType.TEXT, label: 'Lista de asociados', container: 'GrupoBusqueda' });
formulario.addField({ id: 'campoitem', type: serverWidget.FieldType.TEXT, label: 'Seleccionar Producto', source: 'item', container: 'GrupoBusqueda' });
// grupo 2
var GrupoBusquedaDos = formulario.addFieldGroup({ id: 'GrupoBusquedaDos', label: ' AXA 2019' });
GrupoBusquedaDos.isSingleColumn = true;
formulario.addField({ id: 'preciobase1', type: serverWidget.FieldType.CURRENCY, label: 'Precio desde', container: 'GrupoBusquedaDos' });
formulario.addField({ id: 'preciobase2', type: serverWidget.FieldType.CURRENCY, label: 'Precio hasta', container: 'GrupoBusquedaDos' });
formulario.addField({ id: 'ivaporcent1', type: serverWidget.FieldType.PERCENT, label: 'Promocion desde', container: 'GrupoBusquedaDos' });
formulario.addField({ id: 'ivaporcent2', type: serverWidget.FieldType.PERCENT, label: 'Promocion hasta', container: 'GrupoBusquedaDos' });
// creamos un boton de envio y uno de limpieza de campos
formulario.addSubmitButton({ id: 'markall', label: 'Enviar Filtro' });
formulario.addResetButton({ label: 'Limpiar Campos' });
//enviamos un render a una pagina para visualizar el formulario
context.response.writePage(formulario);
// creamos una varible que guarde el parametro del campo del formulario
var codigobarra = context.request.parameters.codigobarra;
var nombrelinea = context.request.parameters.nombrelinea;
var nombrelista = context.request.parameters.nombrelista;
var campoitem = context.request.parameters.campoitem;
var preciobase1 = context.request.parameters.preciobase1;
var preciobase2 = context.request.parameters.preciobase2;
var ivaporcent1 = context.request.parameters.ivaporcent1;
var ivaporcent2 = context.request.parameters.ivaporcent2;
// si el campo esta lleno entonces hacer lo suiguiente
if (codigobarra) {
var filterOne = search.createFilter({ name: 'upccode', join: 'custrecord_nso_item', operator: search.Operator.STARTSWITH, values: [codigobarra] });
var filtrosArray = busqueda.filters;
filtrosArray.push(filterOne);
datos(filtrosArray)
} else if (nombrelinea) {
var filterOne = search.createFilter({ name: 'vendorname', join: 'custrecord_nso_item', operator: search.Operator.STARTSWITH, values: [nombrelinea] });
var filtrosArray = busqueda.filters;
filtrosArray.push(filterOne);
datos(filtrosArray);
} else if (nombrelista) {
var filterOne = search.createFilter({ name: 'name', join: 'CUSTRECORD_AXA_PRU_BOD_CLI', operator: search.Operator.STARTSWITH, values: [nombrelista] });
var filtrosArray = busqueda.filters;
filtrosArray.push(filterOne);
datos(filtrosArray);
} else if (campoitem) {
var filterOne = search.createFilter({ name: 'custrecord_nso_item', operator: search.Operator.STARTSWITH, filter: [campoitem] });
var filtrosArray = busqueda.filters;
filtrosArray.push(filterOne);
datos(filtrosArray);
} else if (preciobase1, preciobase2) {
var filterOne = search.createFilter({ name: 'formulanumeric', formula: 'ROUND(({custrecord_nso_costo_maestro}+({custrecord_nso_costo_maestro}*{custrecord_axa_pru_bod_cli.custrecord_nso_margen_2})),0)', operator: search.Operator.GREATERTHAN, values: [preciobase1] });
var filterTwo = search.createFilter({ name: 'formulanumeric', formula: 'ROUND(({custrecord_nso_costo_maestro}+({custrecord_nso_costo_maestro}*{custrecord_axa_pru_bod_cli.custrecord_nso_margen_2})),0)', operator: search.Operator.NOTGREATERTHAN, values: [preciobase2] });
var filtrosArray = busqueda.filters;
filtrosArray.push(filterOne, filterTwo);
datos(filtrosArray);
}
//se validan los datos enviados del formulario y se agragan a la funcion del array
function datos(filtrosArray) {
//cargamos la cantidad de registros que queremos ver
var FiltrosV4 = busqueda.run().getRange({ start: 0, end: 50 });
//creamos un formulario para insertar la sublista
var form = serverWidget.createForm({
title: 'Datos Encontrados'
});
// creamos un link para añadirlo dentro de "More" y volver a hacer otro filtro
form.addPageLink({ type: serverWidget.FormPageLinkType.CROSSLINK, title: 'Nuevo Filtro', url: '/app/site/hosting/scriptlet.nl?script=1350&deploy=1' });
// creamos la caja que necesitamos para empezar a llenar los datos de una sublista
var sublist = form.addSublist({
id: 'sublist',
type: serverWidget.SublistType.LIST,
label: 'Listado para Cantida de productos'
});
//creamos otra caja para otras sublistas
var sublists = form.addSublist({
id: 'sublistas',
type: serverWidget.SublistType.LIST,
label: 'Listado Selección Multiple'
});
// Columnas que va a tener la sublista
sublist.addField({ id: 'custpage_empresa', label: 'Empresa', type: serverWidget.FieldType.TEXT });
sublist.addField({ id: 'custpage_idinterno', label: 'ID Interno', type: serverWidget.FieldType.TEXT });
sublist.addField({ id: 'custpage_codigobarra', label: 'Codigo de Barras', type: serverWidget.FieldType.TEXT });
sublist.addField({ id: 'custpage_producto', label: 'Producto', type: serverWidget.FieldType.TEXT });
sublist.addField({ id: 'custpage_linea', label: 'Linea', type: serverWidget.FieldType.TEXT });
sublist.addField({ id: 'custpage_precio', label: 'Precio Venta', type: serverWidget.FieldType.CURRENCY });
sublist.addField({ id: 'custpage_descuento', label: 'Decuento', type: serverWidget.FieldType.PERCENT });
sublist.addField({ id: 'custpage_predesc', label: 'Precio Descuento', type: serverWidget.FieldType.CURRENCY });
sublist.addField({ id: 'custpage_iva', label: 'IVA', type: serverWidget.FieldType.PERCENT });
sublist.addField({ id: 'custpage_preiva', label: 'Precio IVA', type: serverWidget.FieldType.CURRENCY });
sublist.addField({ id: 'custpage_promo', label: 'Fecha Promocion', type: serverWidget.FieldType.DATE });
//Asignamos los valores que vamos a llamar al ID de la sublista
var sublist = form.getSublist({ id: 'sublist' });
for (var i = 0; i < FiltrosV4.length; i++) { // para i = 0, i menor que la cantidad que tiene la variable, contar de uno en uno
var columns = FiltrosV4[i].columns; // creamos la variable para llamar lo que tiene la variable en cada posicion generado en columnas
//creamos un array de valores donde traemos la columna 0.1.2.3.... con su listados de array en esa columna
sublist.setSublistValue({ id: 'custpage_empresa', line: i, value: [FiltrosV4[i].getValue(columns[0])] });
sublist.setSublistValue({ id: 'custpage_idinterno', line: i, value: [FiltrosV4[i].getValue(columns[1])] });
sublist.setSublistValue({ id: 'custpage_codigobarra', line: i, value: [FiltrosV4[i].getValue(columns[2])] });
sublist.setSublistValue({ id: 'custpage_producto', line: i, value: [FiltrosV4[i].getText(columns[3])] });
sublist.setSublistValue({ id: 'custpage_linea', line: i, value: [FiltrosV4[i].getValue(columns[4])] });
sublist.setSublistValue({ id: 'custpage_precio', line: i, value: [FiltrosV4[i].getValue(columns[5])] });
sublist.setSublistValue({ id: 'custpage_descuento', line: i, value: [FiltrosV4[i].getValue(columns[6])] });
sublist.setSublistValue({ id: 'custpage_predesc', line: i, value: [FiltrosV4[i].getValue(columns[7])] });
sublist.setSublistValue({ id: 'custpage_iva', line: i, value: [FiltrosV4[i].getValue(columns[8])] });
sublist.setSublistValue({ id: 'custpage_preiva', line: i, value: [FiltrosV4[i].getValue(columns[9])] });
sublist.setSublistValue({ id: 'custpage_promo', line: i, value: [FiltrosV4[i].getValue(columns[10])] });
}
// creamos una columna de tipo entero para numeros esta se añadira al final de cada registro
var check = sublist.addField({
id: 'custpage_cantidad',
label: 'Cantidad Producto',
type: serverWidget.FieldType.INTEGER
});
//El campo de sublista aparece como un campo de entrada de datos (para un campo de selección sin casilla de verificación)
//NORMAL,ENTRY,HIDDEN,INLINE,DISABLED,READONLY
check.updateDisplayType({ displayType: serverWidget.FieldDisplayType.ENTRY });
//asi podemos llamar un archivo externo tipo clientscript
//form.clientScriptModulePath = 'SuiteScripts/GHpruebaScript/EventScript/GHeventoScript.js';
//creamos un boton
var botones = sublist.addButton({
id: 'custpage_buttonid',
label: 'Enviar Selección',
// functionName: 'afterSubmit' // 'runUserEvent' //'aqui va la funcion de llamada desde el script de cliente'
functionName: 'alertaEnvio(eventos)' //'aqui va la funcion de llamada desde el script de cliente'
});
botones.clientScriptModulePath = 'SuiteScripts/GHpruebaScript/ClientScript/GHclientScript.js';
// convertimos todo lo contenido en form a una pagina suitelet
context.response.writePage(form);
}
}
return {
onRequest: onRequest
};
});
这是我的 ClientScript************
/**
* Module Description
*/
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope Public
*/
define([],
function() {
function alertaEnvio(eventos) {
var eventos = 34;
alert('Datos encontrados: si desea otra busqueda puede ir a More y en la opción Filtro nuevo' + eventos);
return;
}
//retorna la funcion de la alerta
return {
pageInit: alertaEnvio,
};
});
当我运行我的 suitelet 时,它对我来说非常完美,问题是当我调用客户端脚本时。
如果我将其保留如下:' botones.clientScriptModulePath "'SuiteScripts/GHTestScript/ClientScript/GHclientScript.js'; ',我会收到此错误:
如果我将其保留如下:' form.clientScriptModulePath "'SuiteScripts/GHTestScript/ClientScript/GHclientScript.js'; ',效果很好,但无需点击
最佳答案
一旦页面加载,就会调用 ClientScript 中的 pageInit
函数,因此您无法将 alertaEnvio
公开为 pageInit 方法。
您可以做的是首先更改客户端脚本并将alertaEnvio
附加到window
(全局)对象中。
您的客户端脚本应如下所示
/**
* @NApiVersion 2.x
* @NScriptType ClientScript
* @NModuleScope Public
*/
define([],
function () {
function alertaEnvio(eventos) {
var eventos = 34;
alert('Datos encontrados: si desea otra busqueda puede ir a More y en la opción Filtro nuevo' + eventos);
return;
}
function pageInit(context) {
window.alertaEnvio = alertaEnvio;
}
//retorna la funcion de la alerta
return {
pageInit: pageInit,
};
}
);
然后在您的套件中进行以下更改
在方法datos
中更新按钮定义如下
var botones = sublist.addButton({
id: 'custpage_buttonid',
label: 'Enviar Selección',
functionName: 'alertaEnvio' //'aqui va la funcion de llamada desde el script de cliente'
});
从 datos
方法中删除以下行
botones.clientScriptModulePath = 'SuiteScripts/GHpruebaScript/ClientScript/GHclientScript.js';
在方法 onRequest
中添加以下行
formulario.clientScriptModulePath = 'SuiteScripts/GHpruebaScript/ClientScript/GHclientScript.js';
关于javascript - 使用 ClientScript SS2.0 在 SUITELET 中创建事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017951/
我正在阅读 Suitescript 2.0 手册,只是想了解手册本身,更不用说 Suitescript。有人可以提供一个简单的示例,套件如何显示到 html 页面?就像一个简单的记录类型记录字段值显示
我长期以来一直在 NetSuite 中使用 Suitelet 来生成和返回 PDF 文档。然而,有一段时间它们已经以 "scriptlet.nl" 的形式返回,而不是我以前得到的 "filename.
我试图简单地用市场列表填充多选字段。 这是市场对象: var marketplaces = { amazonCom:{ label: 'Amaz
希望能帮到你。看起来这么小的东西让我很烦!! 在 SuiteScript 2.0 中,我只想在按下 Suitelet 上的“提交”按钮后立即将 CSV 文件直接下载到客户端。我的代码下载到客户端,但是
希望能帮到你。看起来这么小的东西让我很烦!! 在 SuiteScript 2.0 中,我只想在按下 Suitelet 上的“提交”按钮后立即将 CSV 文件直接下载到客户端。我的代码下载到客户端,但是
我正在尝试使用我已经创建的自定义保存搜索中的数据填充套件中的子列表。我的问题是子列表仅从与我正在执行的已保存搜索的“类型”相对应的字段中填充数据。例如,在这种情况下,保存的搜索是“交易”类型的搜索。例
我的 suitelet 的 GET 部分中有一个多选字段,我正尝试在 POST 部分中使用该字段的值。 这是 GET 部分中我的多选字段,因为它由对象填充: var marketplacesList
我使用 nlapiCreateForm 创建了表单并添加了一些字段。 点击提交按钮我想检查验证,但它自动进入了 Release模式。 有些字段需要为必填字段,这样就无法输入空值。 任何人都请帮助我。
function demoHTML(request, response) { var html = ' Hello World '; response.write( html
我有一个带有文本字段的表单,我想将其发送到另一台服务器。我遇到的问题是我不知道如何设置请求 URL。我想将表单的内容发送到另一个 URL,然后将响应处理到 Netsuite 记录中。以下是代码的格式。
我必须创建一个套件页面,首先应该根据输入的日期范围获取所有 vendor ,然后必须获取所选结果 vendor 的详细信息(有一个复选框列,我可以通过它选择 vendor )点击提交按钮后。但在这里我
我正在尝试设置一个 Suitelet,让用户可以选择调整已保存搜索的条件。我已经设置了 ID 为 customsearch_ca_export_detail_search__38 的搜索,我希望能够在
我的目标是将自定义提交按钮附加到 Suitelet,该 Suitelet 向外部服务器发送发布请求。我遇到的问题是渲染页面时函数 send()在我的自定义按钮 form.addButton('subm
发生了什么 我的 Shopify Webhook 未将详细信息传递给 NetSuite 中的 SuiteScript 2.0 Suitelet。 我想要发生什么 我希望 shopify 将 JSON
1)与ReSTLet、suitelet和suitetalk中的比较在哪些情况下我们最喜欢使用reSTLet,在哪些场景中我们最喜欢使用 suitelet,在哪些情况下我们最喜欢使用 suitetalk
Suitelet 默认形式很难看。我想使用 Netsuite 中的 suitelet 的 bootstrap 创建自定义表单。我可以这样做吗?我想使用 html 和 suitelet 来显示这个 Bo
Suitelet 默认形式很难看。我想使用 Netsuite 中的 suitelet 的 bootstrap 创建自定义表单。我可以这样做吗?我想使用 html 和 suitelet 来显示这个 Bo
我想创建一个执行以下操作的套件。在 GET 中,我想要一个 nlapiSearchRecord,它将显示特定条件下的自定义记录列表以及每个记录旁边的复选框。用户将检查其中一些并提交。 此时,我想获取那
我的上级要求我使用高阶函数(.filter/.map/.reject/.reduce)打印行项目的值。我很困惑如何编写高阶函数而不是 for 循环(用于打印发票打印输出中的行值)。我只需要在数量超过
我需要为子列表中名为“Enviar Selección”的按钮创建一个事件...... 这是我的套房************************ /** * @NApiVersion 2.0
我是一名优秀的程序员,十分优秀!