Miklix

Data() ja buf2Buf() erinevus rakenduses Dynamics AX 2012

Avaldatud: 15. veebruar 2025, kell 22:53:40 UTC
Viimati uuendatud: 12. jaanuar 2026, kell 08:41:00 UTC

See artikkel selgitab Dynamics AX 2012 meetodite buf2Buf() ja data() erinevusi, sh millal on mõlema kasutamine asjakohane, ning toob näite X++ koodist.


See lehekülg on inglise keelest masintõlgitud, et muuta see võimalikult paljudele inimestele kättesaadavaks. Kahjuks ei ole masintõlge veel täiuslik tehnoloogia, mistõttu võivad esineda vead. Kui soovite, võite vaadata ingliskeelset originaalversiooni siin:

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

Selle postituse teave põhineb Dynamics AX 2012 R3-l. See ei pruugi kehtida teiste versioonide puhul.

Kui teil on vaja Dynamics AX-is kõigi väljade väärtused ühest tabelipuhvrist teise kopeerida, teeksite traditsiooniliselt midagi sellist:

toTable.data(fromTable);

See toimib hästi ja enamikul juhtudel on see õige tee.

Siiski on teil ka võimalus kasutada funktsiooni buf2Buf:

buf2Buf(fromTable, toTable);

See toimib ka hästi. Mis vahet siis on?

Erinevus seisneb selles, et buf2Buf ei kopeeri süsteemivälju. Süsteemiväljade hulka kuuluvad sellised väljad nagu RecId, TableId ja ehk kõige olulisem selles kontekstis DataAreaId. Viimane on kõige olulisem seetõttu, et kõige tüüpilisem juhtum, kus buf2Buf() funktsiooni kasutatakse data() funktsiooni asemel, on kirjete dubleerimine ettevõtte kontode vahel, tavaliselt märksõna changeCompany abil.

Näiteks kui olete ettevõttes "dat" ja teil on teine ettevõte nimega "com", kust soovite kõik CustTable'i kirjed kopeerida:

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

Sel juhul see toimib, kuna buf2Buf kopeerib kõik väljaväärtused, välja arvatud süsteemiväljad, uude puhvrisse. Kui oleksite selle asemel kasutanud data(), oleks uus kirje lisatud ettevõtte "com" kontodele, kuna see väärtus oleks samuti uude puhvrisse kopeeritud.

(Tegelikult oleks see toonud kaasa duplikaatvõtme vea, aga see pole ka see, mida sa tahad).

Lisalugemist

Kui see postitus teile meeldis, võivad teile meeldida ka need soovitused:


Jagage Bluesky'sJaga FacebookisJagage LinkedInisJaga TumblrisJaga X-isJagage LinkedInisKinnitage Pinterestis

Mikkel Christensen

Autorist

Mikkel Christensen
Mikkel on miklix.com looja ja omanik. Tal on üle 20 aasta kogemust professionaalse programmeerija/tarkvaraarendajana ning praegu töötab ta täiskohaga suures Euroopa IT-ettevõttes. Kui ta ei kirjuta blogi, veedab ta oma vaba aega mitmesuguste huvide, hobide ja tegevustega, mis võib mingil määral kajastuda sellel veebisaidil käsitletavate teemade mitmekesisuses.