Miklix

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.


Denne siden er maskinoversatt fra engelsk for å gjøre den tilgjengelig for så mange som mulig. Dessverre er maskinoversettelse ennå ikke en fullkommen teknologi, så det kan forekomme feil. Hvis du foretrekker det, kan du se den engelske originalversjonen her:

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:

toTable.data(fromTable);

Dette fungerer bra og er i de fleste tilfeller veien å gå.

Du har imidlertid også muligheten til å bruke buf2Buf-funksjonen i stedet:

buf2Buf(fromTable, toTable);

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:

while select crossCompany : ['com'] custTableFrom
{
    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:


Del på BlueskyDel på FacebookDel på LinkedInDel på TumblrDel på XDel på LinkedInFest på Pinterest

Mikkel Christensen

Om forfatteren

Mikkel Christensen
Mikkel er skaperen og eieren av miklix.com. Han har over 20 års erfaring som profesjonell dataprogrammerer/programvareutvikler og er for tiden ansatt på fulltid i et stort europeisk IT-selskap. Når han ikke blogger, bruker han fritiden sin på en lang rekke interesser, hobbyer og aktiviteter, noe som til en viss grad kan gjenspeiles i de mange ulike temaene som dekkes på dette nettstedet.