Miklix

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

Avaldatud: 15. veebruar 2025, kell 22:53:40 UTC

Selles artiklis selgitatakse Dynamics AX-i 2012 meetodite buf2Buf() ja data() erinevusi, sealhulgas seda, millal on asjakohane kasutada mõlemat ja X++ koodi näidet.


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

Selles postituses olev teave põhineb Dynamics AX-i 2012 R3-l. See võib teiste versioonide jaoks kehtida, kuid ei pruugi kehtida.

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

toTable.data(fromTable);

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

Siiski on teil võimalus kasutada ka 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äljad hõlmavad selliseid välju nagu RecId, TableId ja ehk kõige olulisem selles kontekstis DataAreaId. Põhjus, miks viimane on kõige olulisem, on see, et kõige tüüpilisem juhtum, kus kasutaksite data() asemel buf2Buf(), on kirjete dubleerimine ettevõtte kontode vahel, tavaliselt märksõna changeCompany abil.

Näiteks kui kuulute ettevõttesse "dat" ja teil on teine ​​ettevõte nimega "com", millest soovite kõik CustTable'i kirjed kopeerida:

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

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

(Tegelikult oleks see kaasa toonud dubleeriva võtme vea, kuid see pole ka see, mida te ei soovi).

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

Mikkel Bang Christensen

Autorist

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