Miklix

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

Objavljeno: 15. februar 2025 ob 10:54:02 pop. UTC

V tem članku so razložene razlike med metodama buf2Buf() in data() v Dynamics AX 2012, vključno s tem, kdaj je primerno uporabiti vsako in primer 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 Dynamics AX 2012 R3. Lahko velja ali ne velja za druge različice.

Ko morate kopirati vrednost vseh polj iz enega vmesnega pomnilnika tabele v drugega v Dynamics AX, bi običajno storili nekaj takega:

toTable.data(fromTable);

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

Vendar pa imate tudi možnost, da namesto tega uporabite funkcijo 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 najpomembnejše v tem kontekstu, DataAreaId. Razlog, da je slednje najpomembnejše, je, da je najbolj tipičen primer, ko bi uporabili buf2Buf() namesto data(), ko podvajate zapise med računi podjetja, običajno z uporabo ključne besede changeCompany.

Na primer, če ste v podjetju "dat" in imate drugo 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 nov medpomnilnik. Če bi namesto tega uporabili data(), bi bil nov zapis vstavljen v račune podjetja "com", ker bi bila ta vrednost prav tako kopirana v novi medpomnilnik.

(Pravzaprav bi to povzročilo napako podvojenega ključa, vendar tudi tega ne želite).

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

Mikkel Bang Christensen

O avtorju

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