Miklix

Skirtumas tarp duomenų () ir buf2Buf () Dynamics AX 2012

Paskelbta: 2025 m. vasario 15 d. 22:53:52 UTC
Paskutinį kartą atnaujinta: 2026 m. sausio 12 d. 08:41:04 UTC

Šiame straipsnyje paaiškinami „buf2Buf()“ ir „data()“ metodų skirtumai „Dynamics AX 2012“, įskaitant tai, kada tinka naudoti kiekvieną iš jų, ir pateikiamas X++ kodo pavyzdys.


Šis puslapis buvo mašininiu būdu išverstas iš anglų kalbos, kad juo galėtų naudotis kuo daugiau žmonių. Deja, mašininis vertimas dar nėra tobula technologija, todėl gali pasitaikyti klaidų. Jei pageidaujate, originalią versiją anglų kalba galite peržiūrėti čia:

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

Šiame įraše pateikta informacija pagrįsta „Dynamics AX 2012 R3“. Ji gali tikti arba netikti kitoms versijoms.

Kai „Dynamics AX“ sistemoje reikia nukopijuoti visų laukų reikšmes iš vienos lentelės buferio į kitą, tradiciškai reikėtų atlikti tokius veiksmus:

toTable.data(fromTable);

Tai veikia gerai ir daugeliu atvejų yra teisingas kelias.

Tačiau taip pat galite naudoti funkciją „buf2Buf“:

buf2Buf(fromTable, toTable);

Tai irgi gerai veikia. Taigi, koks skirtumas?

Skirtumas tas, kad „buf2Buf“ nekopijuoja sistemos laukų. Sistemos laukai apima tokius laukus kaip „RecId“, „TableId“ ir, ko gero, svarbiausia šiame kontekste – „DataAreaId“. Pastarasis yra svarbiausias todėl, kad dažniausiai vietoj „data()“ naudojama „buf2Buf()“, kai dublikuojami įrašai tarp įmonės sąskaitų, paprastai naudojant raktinį žodį „changeCompany“.

Pavyzdžiui, jei esate įmonėje „dat“ ir turite kitą įmonę pavadinimu „com“, iš kurios norite nukopijuoti visus įrašus iš „CustTable“:

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

Šiuo atveju tai veiks, nes „buf2Buf“ nukopijuoja visas lauko reikšmes, išskyrus sistemos laukus, į naują buferį. Jei būtumėte naudoję „data()“, naujas įrašas būtų įterptas į „com“ įmonės paskyras, nes ta reikšmė taip pat būtų nukopijuota į naują buferį.

(Tiesą sakant, tai būtų sukėlusi pasikartojančio rakto klaidą, bet to irgi nenorite).

Papildoma literatūra

Jei jums patiko šis įrašas, jums taip pat gali patikti šie pasiūlymai:


Pasidalinkite „Bluesky“.Dalintis FacebookBendrinkite „LinkedIn“.Bendrinkite „Tumblr“.Dalintis XBendrinkite „LinkedIn“.Prisegti prie Pinterest

Mikkel Christensen

Apie autorių

Mikkel Christensen
Mikkelis yra miklix.com kūrėjas ir savininkas. Jis turi daugiau nei 20 metų profesionalaus kompiuterių programuotojo ir programinės įrangos kūrėjo patirtį ir šiuo metu visą darbo dieną dirba didelėje Europos IT korporacijoje. Kai jis nerašo tinklaraščio, laisvalaikį skiria įvairiems interesams, pomėgiams ir užsiėmimams, kurie tam tikra prasme gali atsispindėti šioje svetainėje nagrinėjamų temų įvairovėje.