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.
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:
Tai veikia gerai ir daugeliu atvejų yra teisingas kelias.
Tačiau taip pat galite naudoti funkciją „buf2Buf“:
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“:
{
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:
- Ištrinkite juridinį subjektą (įmonės paskyras) „Dynamics AX 2012“.
- Skambinimas AIF dokumentų tarnyboms tiesiai iš X++ naudojant Dynamics AX 2012
- Užklausos naudojimas SysOperation duomenų sutarties klasėje Dynamics AX 2012
