Forskjellen mellom data() og buf2Buf() i Dynamics AX 2012
Publisert: 15. februar 2025 kl. 22:53:54 UTC
Sist oppdatert: 13. september 2025 kl. 22:52:55 UTC
Denne artikkelen forklarer forskjellene mellom buf2Buf()- og data()-metodene i Dynamics AX 2012, inkludert når det er aktuelt å bruke hvert og et X++-kodeeksempel.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Informasjonen i dette innlegget er basert på Dynamics AX 2012 R3. Det kan være gyldig for andre versjoner.
Når du trenger å kopiere verdien for alle felt fra én tabellbuffer til en annen i Dynamics AX, vil du tradisjonelt gjøre noe sånt som:
Dette fungerer bra og er i de fleste tilfeller veien å gå.
Du har imidlertid også muligheten til å bruke buf2Buf-funksjonen i stedet:
Dette fungerer også bra. Så hva er forskjellen?
Forskjellen er at buf2Buf ikke kopierer systemfelt. Systemfelt inkluderer felt som RecId, TableId, og kanskje viktigst i denne sammenhengen, DataAreaId. Grunnen til at sistnevnte er den viktigste, er at det mest typiske tilfellet der du bruker buf2Buf() i stedet for data() er når du dupliserer poster mellom firmakontoer, vanligvis ved bruk av nøkkelordet changeCompany.
Hvis du for eksempel er i "dat"-firmaet og har et annet selskap kalt "com" som du ønsker å kopiere alle poster i CustTable fra:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
I dette tilfellet vil det fungere fordi buf2Buf kopierer alle feltverdier, unntatt systemfelt til den nye bufferen. Hvis du hadde brukt data() i stedet, ville den nye posten blitt satt inn i "com"-firmakontoene fordi denne verdien også ville blitt kopiert til den nye bufferen.
(Egentlig ville det ha resultert i en duplikatnøkkelfeil, men det er ikke det du vil heller).
Videre lesing
Hvis du likte dette innlegget, kan du også like disse forslagene:
- Identifisere dokumentklasse og spørring for AIF-tjeneste i Dynamics AX 2012
- Dynamics AX 2012 SysOperation Framework Rask oversikt
- Ringe AIF Document Services direkte fra X++ i Dynamics AX 2012