Diferența dintre data() și buf2Buf() în Dynamics AX 2012
Publicat: 15 februarie 2025 la 22:53:59 UTC
Ultima actualizare: 12 ianuarie 2026 la 08:41:09 UTC
Acest articol explică diferențele dintre metodele buf2Buf() și data() în Dynamics AX 2012, inclusiv când este potrivit să se utilizeze fiecare și un exemplu de cod X++.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Informațiile din această postare se bazează pe Dynamics AX 2012 R3. Este posibil să fie sau nu valabile pentru alte versiuni.
Când trebuie să copiați valoarea tuturor câmpurilor dintr-un buffer de tabel în altul în Dynamics AX, în mod tradițional, ați face ceva de genul:
Acest lucru funcționează bine și, în majoritatea cazurilor, este calea de urmat.
Totuși, aveți și opțiunea de a utiliza funcția buf2Buf:
Și asta funcționează bine. Deci, care este diferența?
Diferența este că buf2Buf nu copiază câmpurile de sistem. Câmpurile de sistem includ câmpuri precum RecId, TableId și, probabil cel mai important în acest context, DataAreaId. Motivul pentru care acesta din urmă este cel mai important este că cel mai tipic caz în care ați utiliza buf2Buf() în loc de data() este atunci când duplicați înregistrări între conturi de companie, de obicei prin utilizarea cuvântului cheie changeCompany.
De exemplu, dacă sunteți în compania „dat” și aveți o altă companie numită „com” din care doriți să copiați toate înregistrările din CustTable:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
În acest caz, va funcționa deoarece buf2Buf copiază toate valorile câmpurilor, cu excepția câmpurilor de sistem, în noul buffer. Dacă ați fi folosit data() în schimb, noua înregistrare ar fi fost inserată în conturile companiei „com”, deoarece și valoarea respectivă ar fi fost copiată în noul buffer.
(De fapt, ar fi rezultat o eroare de cheie duplicată, dar nici asta nu este ceea ce îți dorești).
Lectură suplimentară
Dacă ți-a plăcut această postare, s-ar putea să-ți placă și aceste sugestii:
- Utilizarea cadrului SysExtension pentru a afla ce subclasă să instanțieze în Dynamics AX 2012
- Convertiți un real în șir cu toate zecimale în Dynamics AX 2012
- Ștergeți o entitate juridică (conturi de companie) în Dynamics AX 2012
