Desesperado con jSon


([N1] Spicer) #1

Amigos,

Estoy desesperado porque intento exportar los registros de un proceso desde una tabla a un jSon y algo que en teoría es simple no lo he podido hacer… eso me tiene enfermo!
Al ejecutar via Cirrus, obtengo
{“message”:“Result of expression ‘jsonObject.push’ [undefined] is not a function… In Line Number: 278”}

¿Me pueden ayudar?
Mil gracias!


PedidosPorDespachar: function (params) {
importClass(“VProcess”);

		var PRC_PEDIDOS_POR_DESPACHAR = new VProcess(theRoot);
		var NumeroRegistro;
	
		// Creo el jSon
		var jsonObject = { "LineaPedidoPorDespachar" : [] };
		
		PRC_PEDIDOS_POR_DESPACHAR.setProcess("4s3d6hix.vcd/PRC_PEDIDOS_POR_DESPACHAR");
		if (PRC_PEDIDOS_POR_DESPACHAR.exec())
		{
			
			var ListaResultados = PRC_PEDIDOS_POR_DESPACHAR.result();
			var CantidadRegistros = ListaResultados.listSize();
							
		}
		
					
		// Ahora leo la lista de pedidos y genero un jSon con el Id WF_PRCS_EC y el nombre de la persona
		
		for (NumeroRegistro=0; NumeroRegistro <= CantidadRegistros; NumeroRegistro++) {
			
			var RegistroResultadoBusqueda = ListaResultados.readAt(NumeroRegistro);
			
			if (RegistroResultadoBusqueda.isOK()) {
				
				// Iniciliazo una fila
				var LineaPedidoPorDespachar = {};
				
				LineaPedidoPorDespachar = (
					{Id: RegistroResultadoBusqueda.fieldToString( "Id" )},
					{NombreCliente: RegistroResultadoBusqueda.fieldToString
                                                   ( "#CLIENTE_TITULAR.NOMBRE_PARA_MOSTRAR" )}
					);
				
				jsonObject.push (LineaPedidoPorDespachar);
				
						
			}
		}
		
		return JSON.stringify( jsonObject );
		
		
	}

}


([N1] wikan) #2

Buenas, estas usando push que es un método de la Array.
Te debería funcionar así

jsonObject.LineaPedidoPorDespachar.push( LineaPedidoPorDespachar );


([N1] Spicer) #3

Estimado Wikan,

Mil gracias por la respuesta. Desgraciadamente no funciona:
{“message”:“Result of expression ‘jsonObject.LineaPedidoPorDespachar’ [undefined] is not an object… In Line Number: 282”}

¿Cómo va a ser tan difícil meter un par de campos resultado de búsqueda en un jSon para leerlo desde una aplicación en ASP.NET?

;(


([N1] Manuel) #4

Hablando desde la ignorancia , si el campo #CLIENTE_TITULAR.NOMBRE_PARA_MOSTRAR es una formula, creo que no te va a funcionar. Tampoco creo que te deje pasar el campo por lo estas cogiendo de otra tabla. Para descartar posibilidades pasaría primero solo el id, si funciona lo que me crearía un campo NOMBRE_PARA_MOSTRAR EN la misma tabla y lo pasaría. Asi probaría si funciona el proceso.


([N3] pacosatu) #5

Hola Spicer.

Así de pronto veo 2 errores muy básicos.

  • Primero, el Array LineaPedidoPorDespachar de debe definir con corchetes [], no con paréntesis.
  • Segundo, a la función RegistroResultadoBusqueda.fieldToString("#CLIENTE_TITULAR.NOMBRE_PARA_MOSTRAR") le sobre la almohadilla # del nombre de campo.

Corrige y pruebas.

Saludos
Paco Satué


([N1] Spicer) #6

Estimado Paco,

Hice lo que me sugieres sin embargo sigo sin obtener un resultado. Estoy al borde de tirarme por la ventana…
te copio el script modificado a ver si me puedes iluminar

Saludos


if (RegistroResultadoBusqueda.isOK()) {

				// Iniciliazo una fila
				var LineaPedidoPorDespachar = {};
				
				LineaPedidoPorDespachar = [
					{Id: RegistroResultadoBusqueda.fieldToString( "Id" )},
					{NombreCliente: RegistroResultadoBusqueda.fieldToString( "CLIENTE_TITULAR.NOMBRE_PARA_MOSTRAR" )}
					];
				
				// Original que funciona:
				//jsonObject[NumeroRegistro] = LineaPedidoPorDespachar;
					
					jsonObject.LineaPedidoPorDespachar.push( LineaPedidoPorDespachar );
						
			}
		}