Razlika između data() i buf2Buf() u Dynamics AX 2012
Objavljeno: 15. veljače 2025. u 22:55:38 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 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. Može, ali i ne mora vrijediti za druge verzije.
Kada trebate kopirati vrijednost svih polja iz jednog međuspremnika tablice u drugi u Dynamics AX, tradicionalno biste učinili nešto poput:
Ovo dobro funkcionira iu većini slučajeva to je pravi put.
Međutim, također imate mogućnost korištenja funkcije buf2Buf umjesto toga:
Ovo također dobro funkcionira. Pa u čemu je razlika?
Razlika je u tome što buf2Buf ne kopira sistemska polja. Polja sustava uključuju polja kao što su RecId, TableId i možda najvažnije u ovom kontekstu, DataAreaId. Razlog zašto je potonji najvažniji je taj što je najčešći slučaj u kojem biste koristili buf2Buf() umjesto data() kada duplicirate zapise između računa poduzeća, 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 bi zapis bio umetnut u "com" račune tvrtke jer bi ta vrijednost također bila kopirana u novi međuspremnik.
(Zapravo, to bi rezultiralo duplikatom pogreške ključa, ali ni to nije ono što želite).