Forskellen mellem data() og buf2Buf() i Dynamics AX 2012
Udgivet: 15. februar 2025 kl. 22.53.16 UTC
Sidst opdateret: 12. januar 2026 kl. 08.40.58 UTC
Denne artikel forklarer forskellene mellem metoderne buf2Buf() og data() i Dynamics AX 2012, herunder hvornår det er passende at bruge hver af dem samt et X++-kodeeksempel.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Oplysningerne i dette indlæg er baseret på Dynamics AX 2012 R3. De er muligvis ikke gyldige for andre versioner.
Når du skal kopiere værdien af alle felter fra én tabelbuffer til en anden i Dynamics AX, ville du traditionelt gøre noget i retning af:
Dette fungerer godt, og i de fleste tilfælde er det vejen frem.
Du har dog også mulighed for at bruge buf2Buf-funktionen i stedet:
Dette fungerer også godt. Så hvad er forskellen?
Forskellen er, at buf2Buf ikke kopierer systemfelter. Systemfelter inkluderer felter som RecId, TableId og måske vigtigst af alt i denne sammenhæng DataAreaId. Grunden til, at sidstnævnte er det vigtigste, er, at det mest typiske tilfælde, hvor du ville bruge buf2Buf() i stedet for data(), er ved duplikering af poster mellem virksomhedskonti, typisk ved hjælp af nøgleordet changeCompany.
Hvis du for eksempel er i firmaet "dat" og har et andet firma kaldet "com", som du ønsker at kopiere alle poster i CustTable fra:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
I dette tilfælde vil det fungere, fordi buf2Buf kopierer alle feltværdier, undtagen systemfelter, til den nye buffer. Hvis du havde brugt data() i stedet, ville den nye post være blevet indsat i "com"-firmakontiene, fordi den værdi også ville være blevet kopieret til den nye buffer.
(Faktisk ville det have resulteret i en fejl med duplikatnøgler, men det er heller ikke det, du ønsker).
Yderligere læsning
Hvis du kunne lide dette indlæg, kan du måske også lide disse forslag:
- Ringer til AIF Document Services direkte fra X++ i Dynamics AX 2012
- Identifikation af dokumentklasse og forespørgsel til AIF-tjeneste i Dynamics AX 2012
- Brug af SysExtension Framework til at finde ud af, hvilken underklasse der skal instantieres i Dynamics AX 2012
