Miklix

La diferencia entre data() y buf2Buf() en Dynamics AX 2012

Publicado: 15 de febrero de 2025, 22:53:19 UTC

Este artículo explica las diferencias entre los métodos buf2Buf() y data() en Dynamics AX 2012, incluido cuándo es apropiado utilizar cada uno y un ejemplo de código X++.


Esta página ha sido traducida automáticamente del inglés para hacerla accesible al mayor número de personas posible. Lamentablemente, la traducción automática no es todavía una tecnología perfeccionada, por lo que pueden producirse errores. Si lo prefiere, puede consultar la versión original en inglés aquí:

The Difference Between data() and buf2Buf() in Dynamics AX 2012

La información de este artículo se basa en Dynamics AX 2012 R3. Puede que sea válida o no para otras versiones.

Cuando necesita copiar el valor de todos los campos de un búfer de tabla a otro en Dynamics AX, tradicionalmente haría algo como:

toTable.data(fromTable);

Esto funciona bien y en la mayoría de los casos es el camino a seguir.

Sin embargo, también tienes la opción de utilizar la función buf2Buf:

buf2Buf(fromTable, toTable);

Esto también funciona bien. ¿Cuál es la diferencia?

La diferencia es que buf2Buf no copia campos del sistema. Los campos del sistema incluyen campos como RecId, TableId y, quizás lo más importante en este contexto, DataAreaId. La razón por la que este último es el más importante es que el caso más típico en el que se usaría buf2Buf() en lugar de data() es cuando se duplican registros entre cuentas de la empresa, normalmente mediante el uso de la palabra clave changeCompany.

Por ejemplo, si está en la empresa "dat" y tiene otra empresa llamada "com" de la que desea copiar todos los registros en CustTable:

while select crossCompany : ['com'] custTableFrom
{
    buf2Buf(custTableFrom, custTableTo);
    custTableTo.insert();
}

En este caso, funcionará porque buf2Buf copia todos los valores de los campos, excepto los campos del sistema, en el nuevo búfer. Si hubiera utilizado data() en su lugar, el nuevo registro se habría insertado en las cuentas de la empresa "com", porque ese valor también se habría copiado en el nuevo búfer.

(En realidad, habría resultado en un error de clave duplicada, pero eso tampoco es lo que quieres).

Compartir en BlueskyCompartir en FacebookCompartir en LinkedInCompartir en TumblrCompartir en XCompartir en LinkedInPin en Pinterest

Mikkel Bang Christensen

Sobre el autor

Mikkel Bang Christensen
Mikkel es el creador y propietario de miklix.com. Tiene más de 20 años de experiencia como programador informático profesional y desarrollador de software, y actualmente trabaja a tiempo completo para una gran empresa europea de TI. Cuando no está escribiendo en su blog, dedica su tiempo libre a una gran variedad de intereses, aficiones y actividades, que en cierta medida pueden verse reflejados en la variedad de temas tratados en este sitio web.