clientScriptModulePath

clientScriptModulePath

我需要为子列表“ EnviarSelección”中的按钮创建一个事件。

这是我的SUITELET ************************



/**
 * @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中udpate按钮定义如下

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';

09-26 19:32