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.
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:
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:
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:
{
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:
- String Formatting with Macro and strFmt in Dynamics AX 2012
- Korištenje upita u klasi ugovora podataka SysOperation u Dynamics AX 2012
- Korištenje SysExtension frameworka da biste saznali koju podklasu instancirati u Dynamics AX 2012
