Miklix

Razlika između data() i buf2Buf() u Dynamics AX 2012

Objavljeno: 15. februar 2025. u 22:55:36 UTC
Posljednje ažurirano: 12. januar 2026. u 08:41:23 UTC

Ovaj članak objašnjava razlike između metoda buf2Buf() i data() u Dynamics AX 2012, uključujući kada je prikladno koristiti svaku od njih i primjer X++ koda.


Ova stranica je mašinski prevedena sa engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, mašinsko prevođenje još nije usavršena tehnologija, pa može doći do grešaka. Ako želite, možete pogledati originalnu englesku verziju ovdje:

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

Informacije u ovom postu zasnovane su na Dynamics AX 2012 R3. Mogu, ali i ne moraju biti važeće za druge verzije.

Kada trebate kopirati vrijednost svih polja iz jednog bafera tabele u drugi u Dynamics AX-u, tradicionalno biste uradili nešto poput:

toTable.data(fromTable);

Ovo dobro funkcioniše i u većini slučajeva je pravi put.

Međutim, imate i mogućnost korištenja funkcije buf2Buf umjesto toga:

buf2Buf(fromTable, toTable);

I ovo dobro funkcioniše. Pa koja je razlika?

Razlika je u tome što buf2Buf ne kopira sistemska polja. Sistemska polja uključuju polja kao što su RecId, TableId i, možda najvažnije u ovom kontekstu, DataAreaId. Razlog zašto je ovo drugo najvažnije je taj što je najčešći slučaj u kojem biste koristili buf2Buf() umjesto data() prilikom dupliranja zapisa između računa kompanije, obično korištenjem ključne riječi changeCompany.

Na primjer, ako ste u kompaniji "dat" i imate drugu kompaniju pod nazivom "com" iz koje želite kopirati sve zapise u CustTable:

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

U ovom slučaju, to će raditi jer buf2Buf kopira sve vrijednosti polja, osim sistemskih polja, u novi bafer. Da ste umjesto toga koristili data(), novi zapis bi bio umetnut u račune kompanije "com" jer bi i ta vrijednost bila kopirana u novi bafer.

(Zapravo, to bi rezultiralo greškom duplikata ključa, ali ni to nije ono što želite).

Dodatno čitanje

Ako vam se svidio ovaj post, možda će vam se svidjeti i ovi prijedlozi:


Podijelite na BlueskyPodijelite na FacebookuPodijelite na LinkedIn-uPodijelite na Tumblr-uPodijeli na XPodijelite na LinkedIn-uPrikači na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikkel je kreator i vlasnik miklix.com. Ima preko 20 godina iskustva kao profesionalni kompjuterski programer/programer softvera i trenutno je zaposlen sa punim radnim vremenom u velikoj evropskoj IT korporaciji. Kada ne piše blog, svoje slobodno vrijeme provodi na širokom spektru interesovanja, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme koje se obrađuju na ovoj web stranici.