Miklix

Razlika med data() in buf2Buf() v Dynamics AX 2012

Objavljeno: 15. februar 2025 ob 10:54:02 pop. UTC
Nazadnje posodobljeno: 12. januar 2026 ob 8:41:11 dop. UTC

Ta članek pojasnjuje razlike med metodama buf2Buf() in data() v programu Dynamics AX 2012, vključno s tem, kdaj je primerno uporabiti vsako od njih, in primerom kode X++.


Ta stran je bila strojno prevedena iz angleščine, da bi bila dostopna čim večjemu številu ljudi. Žal strojno prevajanje še ni popolna tehnologija, zato lahko pride do napak. Če želite, si lahko izvirno angleško različico ogledate tukaj:

The Difference Between data() and buf2Buf() in Dynamics AX 2012

Informacije v tej objavi temeljijo na programu Dynamics AX 2012 R3. Morda veljajo za druge različice, morda pa tudi ne.

Ko morate v programu Dynamics AX kopirati vrednost vseh polj iz enega medpomnilnika tabele v drugega, bi tradicionalno storili nekaj takega:

toTable.data(fromTable);

To deluje dobro in v večini primerov je to prava pot.

Vendar pa imate tudi možnost uporabe funkcije buf2Buf:

buf2Buf(fromTable, toTable);

Tudi to deluje dobro. Kakšna je torej razlika?

Razlika je v tem, da buf2Buf ne kopira sistemskih polj. Sistemska polja vključujejo polja, kot so RecId, TableId in morda najpomembneje v tem kontekstu DataAreaId. Slednje je najpomembnejše, ker je najpogostejši primer, ko bi uporabili buf2Buf() namesto data(), podvajanje zapisov med računi podjetij, običajno z uporabo ključne besede changeCompany.

Na primer, če ste v podjetju »dat« in imate še eno podjetje z imenom »com«, iz katerega želite kopirati vse zapise v CustTable:

while select crossCompany : ['com'] custTableFrom
{
    buf2Buf(custTableFrom, custTableTo);
    custTableTo.insert();
}

V tem primeru bo delovalo, ker buf2Buf kopira vse vrednosti polj, razen sistemskih polj, v novi medpomnilnik. Če bi namesto tega uporabili data(), bi bil novi zapis vstavljen v račune podjetja "com", ker bi bila tudi ta vrednost kopirana v novi medpomnilnik.

(Pravzaprav bi to povzročilo napako podvojenega ključa, vendar tudi to ni tisto, kar želite).

Nadaljnje branje

Če vam je bila ta objava všeč, vam bodo morda všeč tudi ti predlogi:


Delite na BlueskyDelite na FacebookuDelite na LinkedInuDelite na TumblrDelite na XDelite na LinkedInuPripni na Pinterest

Mikkel Christensen

O avtorju

Mikkel Christensen
Mikkel je avtor in lastnik spletne strani miklix.com. Ima več kot 20 let izkušenj kot profesionalni računalniški programer/razvijalec programske opreme in je trenutno za polni delovni čas zaposlen v veliki evropski IT korporaciji. Kadar ne piše bloga, svoj prosti čas posveča številnim interesom, hobijem in dejavnostim, kar se do neke mere odraža v raznolikosti tem na tem spletnem mestu.