Razlika između data() i buf2Buf() u Dynamics AX 2012
Objavljeno: 15. februar 2025. u 22:55:36 UTC
Ovaj članak objašnjava razlike između buf2Buf() i data() metoda u Dynamics AX 2012, uključujući i kada je prikladno koristiti svaku i primjer X++ koda.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Informacije u ovom postu su zasnovane na Dynamics AX 2012 R3. Može ili ne mora vrijediti 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 funkcionira i u većini slučajeva je put kojim treba ići.
Međutim, također imate opciju korištenja buf2Buf funkcije umjesto toga:
I ovo dobro funkcionira. U čemu 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 zbog kojeg je ovo drugo najvažnije je taj što je najtipičniji slučaj gdje biste koristili buf2Buf() umjesto data() kada se dupliraju zapisi između računa kompanije, obično pomoću ključne riječi changeCompany.
Na primjer, ako ste u "dat" kompaniji i imate drugu kompaniju koja se zove "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 ubačen u "com" račune kompanije jer bi i ta vrijednost bila kopirana u novi bafer.
(Zapravo, to bi rezultiralo dvostrukom greškom ključa, ali ni to nije ono što želite).