Publicaciones etiquetadas ‘X++’

Método para Exportar tabla a Excel

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en X++

En algunas ocasiones, nos interesa exportar el contenido de una tabla de Axapta al Excel.

A continuación os dejo un Job, que pasando el TableId, nos exportará y abrirá la información de la tabla de Axapta en Excel, mostrando la cabecera de cada campo y su contenido.

static void DAXExport(TableId tableId)
{
	DictTable dt;
	DictField df;
	Common c;
 
 
	CommaIO cio;
	Container con, conSkip;
 
	int field, counter;
	str line, fieldName;
	str fileName;
	;
 
	StartLengthyOperation();
 
	//Access Table based on TableId
	dt = new DictTable(tableId); //For Table schema
	c = dt.makeRecord();         //To access records
	c.selectForUpdate(false);
 
	//Create temporary file
	fileName = strFmt('%1\\ax_%2.csv', WinAPI::getTempPath(), dt.name());
	cio = new CommaIO(fileName, "W");
 
	if(cio)
	{
		cio.outFieldDelimiter(';');
 
		//Column header
		line = "";
		for(field = 1; field <= dt.fieldCnt(); field++)
		{
			//Skip System Columns
			switch(dt.fieldName(dt.fieldCnt2Id(field)))
			{
				case 'modifiedDateTime':
				case 'dEL_ModifiedTime':
				case 'modifiedBy':
				case 'modifiedTransactionId':
				case 'createdDateTime':
				case 'dEL_CreatedTime':
				case 'createdBy':
				case 'createdTransactionId':
				case 'dataAreaId':
				case 'sequenceNum':
				case 'recVersion':
				case 'unionAllBranchId':
				case 'rowNumber':
				case 'RecId':
				case 'TableId':
				conSkip = conins(conSkip, maxint(), field);
				break;
 
				default:
				con = conins(con,field,dt.fieldName(dt.fieldCnt2Id(field)));
			}
		}
 
		cio.writeExp(con);
		con = conNull();
 
		//Table records
		while select c
		{
			line = "";
			for (field = 1; field <= dt.fieldCnt();field++)
			{
				if(0 == confind(conSkip, field))
				con = conins(con, field, c.(dt.fieldCnt2Id(field)));
			}
 
			cio.writeExp(con);
			con = conNull();
 
			counter++;
		}
	}
 
	EndLengthyOperation();
	info(strfmt("%1 registros de la tabla '%2' exportados", counter, dt.name()));
 
	//Open CSV file in registered app
	WinAPI::shellExecute(fileName);
}

Pila llamada en X++

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en X++

En alguna ocasión, nos puede interesar saber por X++, la pila de llamada que se tiene, al llegar a un método, para ello podemos utilizar la siguiente sentencia:

 xSession::xppCallStack()

Esta sentencia nos devuelve la pila de llamadas, en un container, el cual podemos tratar o guardar en un campo de nuestra base de datos, para futuros análisis.

Nuevo editor X++ AX6

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en X++

Desde el blog de Vincent’s, nos llegan noticias de como será el nuevo editor de X++ de Dynamics Ax 6.0.

Este nuevo editor de X++, está basado en el mismo framework que el editor Visual Studio, aquí podemos ver una imagen del nuevo editor

Como novedades podemos adelantar que soportará:

– Multiples fuentes y estilos.

– Diferenciación mediante colores de números y cadenas de caracteres.

– Numeración de líneas.

Mas información en el blog de Vicent’s

 

Consultas entre compañias

1 Estrella2 Estrella3 Estrella4 Estrella5 Estrella (Sin calificar)
Cargando…
Escrito por René Roca el . Posteado en X++

Una de las nuevas funcionalidad agregadas en la versión de Dynamics Ax 2009, es la posibilidad de ejecutar consultas entre varias compañias mediante X++.

Para ello tendremos que crearnos un container, donde especificaremos las compañias donde queremos que se ejecute nuestra consulta:

container c = ['dat', 'dmo'];
select crosscompany: c * from custtable where custtable.Name == "Jones";

Esta sentencia nos devuelve registros de la custTable para las empresas DAT y DMO.