JSON Exportar Enlace Maestro


([N4] rpaton) #1

Hola:
Utilizo la siguiente función para generar un JSON con todos los campos de una tabla para sincronizar tablas entre un Servidor y las Tablets.
Ahora cuando encuentra un campo tiene Enlace a una Tabla Maestra en el JSON me indica el ID a esa tabla maestra, pero yo quiero que se guarde el valor del campo “CODIGO” de la tabla enlazada. ¿Cómo podría hacerlo?

 Saludos.

 Ricardo Patón
function ExportJSON( list ) { // Nos quedamos con la información de la tabla de importación table = list.tableInfo();
if ( table )
{		
	// Nos quedamos con el nombre de la tabla
	var tablaExportacionId = list.tableInfo().id().toString();
		
	// Creamos un objeto a partir del cuál creamos la cadena JSON
	var jsonObject = {};
	
	// Definimos que contiene un objeto cuyo nombre es el identificador de la tabla y contiene líneas
	jsonObject[tablaExportacionId] = { "rows" : [] };
				
	// Recorremos la lista montando las líneas e incluyéndolas  en el objeto
	for( var reg=0; reg < list.listSize(); reg++ )
	{
		// Leemos el registro correspondiente
		register = list.readAt( reg );
		
		if (register.isOK() )
		{		
			var row = {};
		
			// Por cada registro montamos recorremos los campos y montamos el objeto row
			for( var  field = 0; field < table.fieldCount(); field++ )
			{								
				row[register.tableInfo().fieldId( field )] = register.fieldToString( field );
			}
			
			// Por cada registro, introducimos el objeto row				
			jsonObject[tablaExportacionId].rows.push( row );
			
		}			
	}
	
	// Generamos la cadena JSON con ayuda de la función stringify
	return JSON.stringify( jsonObject );
}

}


([N3] pacosatu) #2

Hola Ricardo.

Puedes obtener el valor de cualquier campo Puntero a mestro:
var valor = register.fieldToString( “punteroMaestro.CODIGO” )

  • punteroMaestro es el nombre del campo puntero a maestro
  • CODIGO es el nombre del campo cuyo valor quieres obtener

El código JS que muestras es genérico para cualquier número de campos, sin tener en cuenta el tipo de enlace del campo. Tendrás que personalizar ese código para hacer lo que quieres.

Saludos
Paco Satué


([N4] rpaton) #3

Hola Paco:

Como siempre muchas gracias por tu ayuda. Objetivo conseguido.

Adjunto como queda.

Saludos.

Ricardo Patón

function ExportJSON( list )
{	
	// Nos quedamos con la información de la tabla de importación
	table = list.tableInfo();
	
	if ( table )
	{		
		// Nos quedamos con el nombre de la tabla
		var tablaExportacionId = list.tableInfo().id().toString();
			
		// Creamos un objeto a partir del cuál creamos la cadena JSON
		var jsonObject = {};
		
		// Definimos que contiene un objeto cuyo nombre es el identificador de la tabla y contiene líneas
		jsonObject[tablaExportacionId] = { "rows" : [] };
					
		// Recorremos la lista montando las líneas e incluyéndolas  en el objeto
		for( var reg=0; reg < list.listSize(); reg++ )
		{
			// Leemos el registro correspondiente
			register = list.readAt( reg );
			
			if (register.isOK() )
			{		
				var row = {};
			
				// Por cada registro montamos recorremos los campos y montamos el objeto row
				for( var  field = 0; field < table.fieldCount(); field++ )
				{	
					if(	register.tableInfo().fieldBindType( field ) == 1)
					{	
						row[register.tableInfo().fieldId( field )+".CODIGO"] = register.fieldToString(register.tableInfo().fieldId( field )+".CODIGO");
					}
					else
					{
						row[register.tableInfo().fieldId( field )] = register.fieldToString( field );
					}
				}
				
				// Por cada registro, introducimos el objeto row				
				jsonObject[tablaExportacionId].rows.push( row );
				
			}			
		}
		
		// Generamos la cadena JSON con ayuda de la función stringify
		return JSON.stringify( jsonObject );
	}
}