[AX 2012 R3 – How To] Utilizar el objeto RecordInsertList

La clase RecordInsertList consiste en una lista de elementos (objetos previamente tratados) el cual permite insertar valores de una lista directamente a la base de datos, realizando esta tarea en una sola llamada sin realizar varios viajes.

Generalmente, vamos realizando algún cambio en un registro y ya lo actualizamos en la base de datos. Si son pocos registros, no hay drama. Pero si hablamos de miles de registros la performance se ve afectada. Donde más útil resulta esta clase es en los reportes.

Forma normal


void probarMetodo(RecId _recId, str _algunParametro)
{
TableTemp tabla, nuevaTabla;

while select tabla
where tabla.RecId == _recId
{
nuevaTabla.data(tabla);
nuevaTabla.CampoX = _algunParametro;
//Llama N veces al metodo insertar. Por cada registro inserta en base de datos.
nuevaTabla.insert();
}
}

Utilizando la clase


void probarMetodo(RecId _recId, str _algunParametro)
{
RecordInsertList tempLista;
TableTemp tabla, nuevaTabla;

tempLista = new RecordInsertList(tableNum(TableTemp));

while select tabla
where tabla.RecId == _recId
{
nuevaTabla.data(tabla);
nuevaTabla.CampoX = _algunParametro;
//Agrega el nuevo registro a la lista.
tempLista.add(nuevaTabla);
}
//Inserta toda la lista en la base de datos. Bulk insert.
tempLista.insertDatabase();
}