Różnica między data() i buf2Buf() w Dynamics AX 2012
Opublikowano: 15 lutego 2025 22:53:56 UTC
Ostatnia aktualizacja: 12 stycznia 2026 08:41:07 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 zamieszczono przykład kodu X++.
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ć aktualne 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ę:
To rozwiązanie sprawdza się i w większości przypadków jest właściwym rozwiązaniem.
Możesz jednak również skorzystać z funkcji buf2Buf:
To też działa dobrze. Jaka jest więc różnica?
Różnica polega na tym, że buf2Buf nie kopiuje pól systemowych. Pola systemowe obejmują pola takie jak RecId, TableId i, co być może najważniejsze w tym kontekście, DataAreaId. Powodem, dla którego to drugie jest najważniejsze, jest to, że najczęściej używa się buf2Buf() zamiast data() podczas duplikowania rekordów między kontami firmowymi, zazwyczaj za pomocą słowa kluczowego changeCompany.
Na przykład, jeśli jesteś w firmie „dat” i masz inną firmę o nazwie „com”, z której chcesz skopiować wszystkie rekordy w CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
W tym przypadku zadziała, ponieważ funkcja buf2Buf kopiuje wszystkie wartości pól, z wyjątkiem pól systemowych, do nowego bufora. Gdyby zamiast tego użyto funkcji data(), nowy rekord zostałby wstawiony do kont firmowych „com”, ponieważ ta wartość również zostałaby skopiowana do nowego bufora.
(W rzeczywistości doprowadziłoby to do błędu duplikatu klucza, ale o to też nie chodzi).
Dalsza lektura
Jeśli podobał Ci się ten wpis, mogą Cię zainteresować również poniższe sugestie:
- Korzystanie z zapytania w klasie kontraktu danych SysOperation w systemie Dynamics AX 2012
- Identyfikowanie klasy dokumentu i zapytania dla usługi AIF w systemie Dynamics AX 2012
- Korzystanie z struktury SysExtension w celu znalezienia podklasy, którą należy utworzyć w systemie Dynamics AX 2012
