Miklix

Разликата помеѓу податоците () и 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, традиционално би направиле нешто како:

toTable.data(fromTable);

Ова функционира добро и во повеќето случаи е начин да се оди.

Сепак, наместо тоа, имате можност да ја користите функцијата buf2Buf:

buf2Buf(fromTable, toTable);

Ова исто така добро функционира. Па што е разликата?

Разликата е во тоа што buf2Buf не ги копира системските полиња. Системските полиња вклучуваат полиња како RecId, TableId и можеби најважно во овој контекст, DataAreaId. Причината поради која второто е најважно е тоа што најтипичниот случај кога би користеле buf2Buf() наместо data() е кога се дуплираат записи помеѓу сметките на компанијата, обично со употреба на клучниот збор changeCompany.

На пример, ако сте во компанијата „dat“ и имате друга компанија наречена „com“ од која сакате да ги копирате сите записи во CustTable од:

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

Во овој случај, ќе работи бидејќи buf2Buf ги копира сите вредности на полињата, освен системските полиња во новиот бафер. Ако сте користеле data() наместо тоа, новиот запис би бил вметнат во сметките на компанијата „com“ бидејќи таа вредност би била ископирана и во новиот бафер.

(Всушност, тоа би резултирало со дупликат клучна грешка, но ни тоа не е она што го сакате).

Споделете на BlueskyСподелете на ФејсбукСподелете на LinkedInСподелете на TumblrСподелете на XСподелете на LinkedInЗакачи на Pinterest

Микел Банг Кристенсен

За авторот

Микел Банг Кристенсен
Микел е креатор и сопственик на miklix.com. Тој има над 20 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.