Miklix

Rozdíl mezi data() a buf2Buf() v Dynamics AX 2012

Vydáno: 15. února 2025 v 22:53:06 UTC
Poslední aktualizace: 12. ledna 2026 v 8:40:57 UTC

Tento článek vysvětluje rozdíly mezi metodami buf2Buf() a data() v aplikaci Dynamics AX 2012, včetně toho, kdy je vhodné je použít, a příkladu kódu X++.


Tato stránka byla strojově přeložena z angličtiny, aby byla přístupná co největšímu počtu lidí. Strojový překlad bohužel ještě není dokonalá technologie, takže může dojít k chybám. Pokud si přejete, můžete si prohlédnout původní anglickou verzi zde:

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

Informace v tomto příspěvku jsou založeny na aplikaci Dynamics AX 2012 R3. Pro jiné verze mohou, ale nemusí být platné.

Pokud potřebujete v Dynamics AX zkopírovat hodnotu všech polí z jedné vyrovnávací paměti tabulky do druhé, tradičně byste udělali něco jako:

toTable.data(fromTable);

To funguje dobře a ve většině případů je to správná cesta.

Máte však také možnost použít funkci buf2Buf:

buf2Buf(fromTable, toTable);

Tohle taky funguje dobře. Tak jaký je v tom rozdíl?

Rozdíl je v tom, že buf2Buf nekopíruje systémová pole. Systémová pole zahrnují pole jako RecId, TableId a v tomto kontextu možná nejdůležitější DataAreaId. Důvod, proč je to druhé nejdůležitější, spočívá v tom, že nejtypičtějším případem, kdy byste použili buf2Buf() místo data(), je duplikace záznamů mezi firemními účty, obvykle pomocí klíčového slova changeCompany.

Například pokud pracujete ve společnosti „dat“ a máte další společnost s názvem „com“, ze které chcete zkopírovat všechny záznamy v CustTable:

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

V tomto případě to bude fungovat, protože buf2Buf zkopíruje všechny hodnoty polí, kromě systémových polí, do nového bufferu. Pokud byste místo toho použili data(), nový záznam by byl vložen do firemních účtů „com“, protože by se tato hodnota také zkopírovala do nového bufferu.

(Ve skutečnosti by to vedlo k chybě duplicitního klíče, ale ani to nechcete).

Další čtení

Pokud se vám tento příspěvek líbil, mohly by se vám líbit i tyto návrhy:


Sdílet na BlueskySdílejte na FacebookuSdílet na LinkedInSdílet na TumblrSdílet na XSdílet na LinkedInPřipnout na Pinterest

Mikkel Christensen

O autorovi

Mikkel Christensen
Mikkel je tvůrcem a majitelem webu miklix.com. Má více než 20 let zkušeností jako profesionální programátor/vývojář softwaru a v současné době pracuje na plný úvazek pro velkou evropskou IT společnost. Pokud zrovna nepíše blog, věnuje svůj volný čas široké škále zájmů, koníčků a aktivit, což se může do jisté míry odrážet v rozmanitosti témat na tomto webu.