Miklix

Różnica między data() i buf2Buf() w Dynamics AX 2012

Opublikowano: 15 lutego 2025 22:53:56 UTC

W tym artykule wyjaśniono różnice między metodami buf2Buf() i data() w systemie Dynamics AX 2012, w tym, kiedy warto używać każdej z nich, a także podano przykład kodu X++.


Ta strona została przetłumaczona maszynowo z języka angielskiego, aby była dostępna dla jak największej liczby osób. Niestety, tłumaczenie maszynowe nie jest jeszcze dopracowaną technologią, więc mogą wystąpić błędy. Jeśli wolisz, możesz wyświetlić oryginalną angielską wersję tutaj:

The Difference Between data() and buf2Buf() in Dynamics AX 2012

Informacje zawarte w tym poście dotyczą systemu Dynamics AX 2012 R3. Mogą być lub nie być ważne dla innych wersji.

Gdy zachodzi potrzeba skopiowania wartości wszystkich pól z jednego bufora tabeli do innego w systemie Dynamics AX, tradycyjnie wykonuje się następującą operację:

toTable.data(fromTable);

To rozwiązanie sprawdza się i w większości przypadków jest właściwe.

Możesz jednak również skorzystać z funkcji buf2Buf:

buf2Buf(fromTable, toTable);

To też działa dobrze. Więc jaka jest różnica?

Różnica polega na tym, że buf2Buf nie kopiuje pól systemowych. Pola systemowe obejmują pola takie jak RecId, TableId i być może najważniejsze w tym kontekście DataAreaId. Powodem, dla którego to drugie jest najważniejsze, jest to, że najbardziej typowym przypadkiem, w którym użyłbyś buf2Buf() zamiast data(), jest duplikowanie rekordów między kontami firmowymi, zazwyczaj za pomocą słowa kluczowego changeCompany.

Na przykład, jeśli pracujesz w firmie „dat” i masz inną firmę o nazwie „com”, z której chcesz skopiować wszystkie rekordy w tabeli CustTable:

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

W tym przypadku zadziała, ponieważ buf2Buf kopiuje wszystkie wartości pól, z wyjątkiem pól systemowych, do nowego bufora. Gdybyś użył data(), nowy rekord zostałby wstawiony do kont firmowych „com”, ponieważ ta wartość zostałaby również skopiowana do nowego bufora.

(W rzeczywistości doprowadziłoby to do błędu duplikatu klucza, ale nie o to nam chodzi).

Udostępnij na BlueskyUdostępnij na FacebookuUdostępnij na LinkedInUdostępnij na TumblrUdostępnij na XUdostępnij na LinkedInPrzypnij na Pintereście

Mikkel Bang Christensen

O autorze

Mikkel Bang Christensen
Mikkel jest twórcą i właścicielem miklix.com. Ma ponad 20-letnie doświadczenie jako profesjonalny programista komputerowy / programista oprogramowania i jest obecnie zatrudniony na pełny etat w dużej europejskiej korporacji IT. Kiedy nie bloguje, poświęca swój wolny czas na szeroki wachlarz zainteresowań, hobby i aktywności, co może w pewnym stopniu znaleźć odzwierciedlenie w różnorodności tematów poruszanych na tej stronie.