Razlika između data() i buf2Buf() u Dynamics AX 2012
Objavljeno: 15. veljače 2025. u 22:55:38 UTC
Zadnje ažuriranje: 12. siječnja 2026. u 08:41:24 UTC
Ovaj članak objašnjava razlike između metoda buf2Buf() i data() u sustavu 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 temelje se 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 međuspremnika tablice u drugi u Dynamics AX-u, tradicionalno biste učinili nešto poput:
Ovo dobro funkcionira i u većini slučajeva je pravi put.
Međutim, imate i mogućnost korištenja funkcije buf2Buf:
I ovo dobro funkcionira. 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 potonje najvažnije je taj što je najčešći slučaj u kojem biste koristili buf2Buf() umjesto data() dupliciranje zapisa između računa tvrtke, obično korištenjem ključne riječi changeCompany.
Na primjer, ako ste u tvrtki "dat" i imate drugu tvrtku pod nazivom "com" iz koje želite kopirati sve zapise u CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
U ovom slučaju, radit će jer buf2Buf kopira sve vrijednosti polja, osim sistemskih polja, u novi međuspremnik. Da ste umjesto toga koristili data(), novi zapis bi bio umetnut u račune tvrtke "com" jer bi se i ta vrijednost kopirala u novi međuspremnik.
(Zapravo, to bi rezultiralo greškom dupliciranog 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:
- Brzi pregled Dynamics AX 2012 SysOperation Framework
- Korištenje upita u klasi ugovora o podacima SysOperation u sustavu Dynamics AX 2012
- Oblikovanje niza s makronaredbom i strFmt u Dynamics AX 2012
