Miklix

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.


Ova je stranica strojno prevedena s engleskog kako bi bila dostupna što većem broju ljudi. Nažalost, strojno prevođenje još nije usavršena tehnologija pa se mogu pojaviti pogreške. Ako želite, izvornu englesku verziju možete pogledati ovdje:

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:

toTable.data(fromTable);

Ovo dobro funkcionira i u većini slučajeva je pravi put.

Međutim, imate i mogućnost korištenja funkcije buf2Buf:

buf2Buf(fromTable, toTable);

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:

while select crossCompany : ['com'] custTableFrom
{
    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:


Podijeli na BlueskyPodijelite na FacebookuPodijelite na LinkedInuPodijelite na TumblrPodijeli na XPodijelite na LinkedInuPrikvači na Pinterest

Mikkel Christensen

O autoru

Mikkel Christensen
Mikkel je kreator i vlasnik miklix.com. Ima više od 20 godina iskustva kao profesionalni računalni programer/razvijač softvera i trenutno je zaposlen na puno radno vrijeme za veliku europsku IT korporaciju. Kada ne piše blog, svoje slobodno vrijeme provodi na široku lepezu interesa, hobija i aktivnosti, što se u određenoj mjeri može odraziti na različite teme obrađene na ovoj web stranici.