Rozdiel medzi data() a buf2Buf() v Dynamics AX 2012
Publikované: 15. februára 2025 o 22:54:02 UTC
Posledná aktualizácia: 12. januára 2026 o 8:41:10 UTC
Tento článok vysvetľuje rozdiely medzi metódami buf2Buf() a data() v systéme Dynamics AX 2012 vrátane toho, kedy je vhodné ich použiť, a príkladu kódu X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Informácie v tomto príspevku sú založené na systéme Dynamics AX 2012 R3. Môžu, ale nemusia byť platné aj pre iné verzie.
Keď potrebujete v systéme Dynamics AX skopírovať hodnotu všetkých polí z jednej vyrovnávacej pamäte tabuľky do druhej, tradične by ste urobili niečo ako:
Toto funguje dobre a vo väčšine prípadov je to správna cesta.
Máte však aj možnosť použiť funkciu buf2Buf:
Aj toto 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 v tomto kontexte možno najdôležitejšie DataAreaId. Dôvod, prečo je najdôležitejšie to druhé, je ten, že najtypickejším prípadom, kedy by ste použili buf2Buf() namiesto data(), je duplikovanie záznamov medzi firemnými účtami, zvyčajne pomocou kľúčového slova changeCompany.
Napríklad, ak pracujete 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:
{
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 nového bufferu. Ak by ste namiesto toho použili data(), nový záznam by sa vložil do účtov spoločnosti „com“, pretože táto hodnota by sa tiež skopírovala do nového bufferu.
(V skutočnosti by to viedlo k chybe duplicitného kľúča, ale ani to nechcete).
Ďalšie čítanie
Ak sa vám tento príspevok páčil, možno sa vám budú páčiť aj tieto návrhy:
- Použitie dotazu v triede kontraktu údajov SysOperation v Dynamics AX 2012
- Použitie rámca SysExtension na zistenie, ktorá podtrieda sa má vytvoriť v Dynamics AX 2012
- Ako iterovať cez prvky Enum z kódu X++ v Dynamics AX 2012
