Miklix

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

Paskelbta: 2025 m. vasario 15 d. 22:53:52 UTC

Šiame straipsnyje paaiškinami skirtumai tarp „Dynamics AX 2012“ metodų „buf2Buf()“ ir „data()“, įskaitant tai, kada tikslinga naudoti kiekvieną ir X++ kodo pavyzdį.


Š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. Jis gali galioti arba negalioja kitoms versijoms.

Kai jums reikia nukopijuoti visų laukų vertes iš vienos lentelės buferio į kitą Dynamics AX, paprastai atlikite kažką panašaus:

toTable.data(fromTable);

Tai veikia gerai ir daugeliu atvejų yra teisingas būdas.

Tačiau taip pat galite naudoti funkciją buf2Buf:

buf2Buf(fromTable, toTable);

Tai taip pat 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. Priežastis, kodėl pastaroji yra pati svarbiausia, yra ta, kad tipiškiausias atvejis, kai vietoj data() naudotumėte buf2Buf(), yra dubliuojant įrašus tarp įmonės sąskaitų, paprastai naudojant raktinį žodį changeCompany.

Pavyzdžiui, jei priklausote „dat“ įmonei ir turite kitą įmonę „com“, iš kurios norite kopijuoti visus „CustTable“ įrašus:

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

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

(Tiesą sakant, dėl to būtų atsiradusi pasikartojančio rakto klaida, bet to irgi nenorite).

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

Mikkel Bang Christensen

Apie autorių

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