Miklix

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.


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. 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:

toTable.data(fromTable);

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:

buf2Buf(fromTable, toTable);

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:

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 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).

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

Mikkel Bang Christensen

O autoru

Mikkel Bang 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.