Разликата между data() и buf2Buf() в Dynamics AX 2012
Публикувано: 15 февруари 2025 г. в 22:53:05 ч. UTC
Последна актуализация: 12 януари 2026 г. в 8:40:56 ч. UTC
Тази статия обяснява разликите между методите buf2Buf() и data() в Dynamics AX 2012, включително кога е подходящо да се използва всеки от тях и примерен X++ код.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Информацията в тази публикация е базирана на Dynamics AX 2012 R3. Тя може да е валидна или да не е валидна за други версии.
Когато трябва да копирате стойността на всички полета от един буфер на таблица в друг в Dynamics AX, традиционно бихте направили нещо подобно:
Това работи добре и в повечето случаи е правилният начин.
Въпреки това, имате и възможност да използвате функцията buf2Buf вместо това:
Това също работи добре. И така, каква е разликата?
Разликата е, че buf2Buf не копира системни полета. Системните полета включват полета като RecId, TableId и може би най-важното в този контекст, DataAreaId. Причината последното да е най-важно е, че най-типичният случай, в който бихте използвали buf2Buf() вместо data(), е при дублиране на записи между фирмени акаунти, обикновено чрез използване на ключовата дума changeCompany.
Например, ако сте в компанията „dat“ и имате друга компания, наречена „com“, от която искате да копирате всички записи в CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
В този случай ще работи, защото buf2Buf копира всички стойности на полетата, с изключение на системните полета, в новия буфер. Ако бяхте използвали data() вместо това, новият запис щеше да бъде вмъкнат в фирмените акаунти "com", защото тази стойност също щеше да бъде копирана в новия буфер.
(Всъщност това би довело до грешка за дублиран ключ, но и това не е това, което искате).
Допълнително четене
Ако ви е харесала тази публикация, може да ви харесат и тези предложения:
- Използване на рамката SysExtension, за да разберете кой подклас да създадем в Dynamics AX 2012
- Изтриване на юридическо лице (фирмени сметки) в Dynamics AX 2012
- Как да итерирате елементите на Enum от X++ код в Dynamics AX 2012
