La diferència entre data() i buf2Buf() a Dynamics AX 2012
Publicat: 5 de març del 2025, a les 19:30:42 UTC
Última actualització: 12 de gener del 2026, a les 8:41:29 UTC
Aquest article explica les diferències entre els mètodes buf2Buf() i data() al Dynamics AX 2012, incloent-hi quan és apropiat utilitzar cadascun i un exemple de codi X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
La informació d'aquesta publicació es basa en el Dynamics AX 2012 R3. Pot ser vàlida o no per a altres versions.
Quan necessiteu copiar el valor de tots els camps d'una memòria intermèdia de taula a una altra al Dynamics AX, tradicionalment fareu alguna cosa semblant a:
Això funciona bé i en la majoria dels casos és el camí a seguir.
Tanmateix, també teniu l'opció d'utilitzar la funció buf2Buf:
Això també funciona bé. Aleshores, quina és la diferència?
La diferència és que buf2Buf no copia els camps del sistema. Els camps del sistema inclouen camps com ara RecId, TableId i, potser el més important en aquest context, DataAreaId. La raó per la qual aquest últim és el més important és que el cas més típic en què s'utilitzaria buf2Buf() en lloc de data() és quan es dupliquen registres entre comptes d'empresa, normalment mitjançant l'ús de la paraula clau changeCompany.
Per exemple, si sou de l'empresa "dat" i teniu una altra empresa anomenada "com" de la qual voleu copiar tots els registres de CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
En aquest cas, funcionarà perquè buf2Buf copia tots els valors dels camps, excepte els camps del sistema, al nou buffer. Si haguéssiu utilitzat data() en comptes d'això, el nou registre s'hauria inserit als comptes de l'empresa "com" perquè aquest valor també s'hauria copiat al nou buffer.
(De fet, hauria donat lloc a un error de clau duplicada, però això tampoc és el que vols).
Lectures addicionals
Si t'ha agradat aquesta publicació, també et poden agradar aquests suggeriments:
- Format de cadena amb macro i strFmt al Dynamics AX 2012
- Identificació de classe de document i consulta per al servei AIF a Dynamics AX 2012
- Trucant a AIF Document Services directament des de X++ a Dynamics AX 2012
