Miklix

Разликата помеѓу податоците () и buf2Buf () во Dynamics AX 2012

Објавено: 5 март 2025, во 19:54:54 UTC
Последно ажурирано: 12 јануари 2026, во 08:41:30 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 години искуство како професионален компјутерски програмер/развивач на софтвер и моментално е вработен со полно работно време во голема европска ИТ корпорација. Кога не пишува блог, тој го поминува своето слободно време на широк спектар на интереси, хоби и активности, кои до одреден степен може да се рефлектираат во разновидните теми опфатени на оваа веб-локација.