Разликата помеѓу податоците () и buf2Buf () во Dynamics AX 2012
Објавено: 5 март 2025, во 19:54:54 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“ бидејќи таа вредност би била ископирана и во новиот бафер.
(Всушност, тоа би резултирало со дупликат клучна грешка, но ни тоа не е она што го сакате).