Razlika između data() i buf2Buf() u dinamici AKS 2012
Objavio: 19. mart 2025. 21:32:41 UTC
Ovaj članak objašnjava razlike između buf2Buf() i data() metoda u Dynamics AX 2012, uključujući i kada je prikladno koristiti svaki i primer Ks++ koda.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Informacije u ovom postu temelje se na Dynamics AX 2012 R3. Mogu biti ili ne moraju biti validne za druge verzije.
Kada je potrebno kopirati vrednost svih polja sa jednog tabelarnog bafera na drugi u Dynamics AX, tradicionalno biste uradili nešto poput:
Ovo dobro funkcioniše i u većini slučajeva je pravi način.
Međutim, takođe imate opciju da umesto toga koristite buf2Buf funkciju:
Ovo takođe 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 zbog kojeg je ovo poslednje najvažnije je to što je najtipičniji slučaj kada biste koristili buf2Buf() umesto data() upravo prilikom dupliciranja zapisa između poslovnih računa, obično korišćenjem changeCompany ključne reči.
Na primer, ako ste u "dat" kompaniji i imate drugu kompaniju pod nazivom "com" iz koje želite da kopirate sve zapise u CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
U ovom slučaju, to će funkcionisati jer buf2Buf kopira sve vrednosti polja, osim sistemskih polja, u novi bafer. Da ste koristili data() umesto toga, novi zapis bi bio ubačen u "com" poslovne račune jer bi ta vrednost takođe bila kopirana u novi bafer.
(Zapravo, to bi izazvalo grešku duplikata ključa, ali to nije ono što želite).