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++.
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:
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:
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:
{
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:
- Jak iterovat prvky výčtu z kódu X++ v Dynamics AX 2012
- Převeďte real na řetězec se všemi desetinnými místy v Dynamics AX 2012
- Použití SysExtension Framework ke zjištění, kterou podtřídu vytvořit instanci v Dynamics AX 2012
