Miklix

Rozdiel medzi data() a buf2Buf() v Dynamics AX 2012

Publikované: 15. februára 2025 o 22:54:02 UTC

Tento článok vysvetľuje rozdiely medzi metódami buf2Buf() a data() v Dynamics AX 2012 vrátane toho, kedy je vhodné použiť každú z nich a príklad kódu X++.


Táto stránka bola strojovo preložená z angličtiny, aby bola prístupná čo najväčšiemu počtu ľudí. Žiaľ, strojový preklad ešte nie je dokonalá technológia, takže sa môžu vyskytnúť chyby. Ak chcete, môžete si pozrieť pôvodnú anglickú verziu tu:

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

Informácie v tomto príspevku sú založené na Dynamics AX 2012 R3. Môže a nemusí platiť pre iné verzie.

Keď potrebujete skopírovať hodnotu všetkých polí z jednej vyrovnávacej pamäte tabuľky do druhej v Dynamics AX, tradične by ste urobili niečo ako:

toTable.data(fromTable);

Funguje to dobre a vo väčšine prípadov je to správna cesta.

Namiesto toho však máte tiež možnosť použiť funkciu buf2Buf:

buf2Buf(fromTable, toTable);

Toto tiež funguje dobre. Aký je teda rozdiel?

Rozdiel je v tom, že buf2Buf nekopíruje systémové polia. Systémové polia zahŕňajú polia ako RecId, TableId a možno najdôležitejšie v tomto kontexte DataAreaId. Najdôležitejším dôvodom je, že najtypickejším prípadom, keď by ste použili buf2Buf() namiesto data(), je duplikovanie záznamov medzi firemnými účtami, zvyčajne pomocou kľúčového slova changeCompany.

Ak ste napríklad v spoločnosti „dat“ a máte inú spoločnosť s názvom „com“, z ktorej chcete skopírovať všetky záznamy v CustTable:

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

V tomto prípade to bude fungovať, pretože buf2Buf skopíruje všetky hodnoty polí okrem systémových polí do novej vyrovnávacej pamäte. Ak by ste namiesto toho použili data(), nový záznam by sa vložil do firemných účtov „com“, pretože táto hodnota by sa tiež skopírovala do nového vyrovnávacej pamäte.

(V skutočnosti by to viedlo k chybe duplicitného kľúča, ale ani to nie je to, čo chcete).

Zdieľať na BlueskyZdieľať na FacebookuZdieľať na LinkedInZdieľať na TumblrZdieľať na XZdieľať na LinkedInPripnúť na Pintereste

Mikkel Bang Christensen

O autorovi

Mikkel Bang Christensen
Mikkel je tvorcom a majiteľom miklix.com. Má viac ako 20 rokov skúseností ako profesionálny počítačový programátor/vývojár softvéru a v súčasnosti pracuje na plný úväzok pre veľkú európsku IT korporáciu. Keď práve nepíše blog, venuje svoj voľný čas širokej škále záujmov, koníčkov a aktivít, čo sa môže do istej miery odrážať v rôznorodosti tém na tejto webovej lokalite.