Miklix

Diferența dintre data() și buf2Buf() în Dynamics AX 2012

Publicat: 15 februarie 2025 la 22:53:59 UTC

Acest articol explică diferențele dintre metodele buf2Buf() și data() din Dynamics AX 2012, inclusiv când este adecvat să folosiți fiecare și un exemplu de cod X++.


Această pagină a fost tradusă automat din limba engleză pentru a o face accesibilă cât mai multor persoane. Din păcate, traducerea automată nu este încă o tehnologie perfecționată, astfel încât pot apărea erori. Dacă preferați, puteți vizualiza versiunea originală în limba engleză aici:

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

Informațiile din această postare se bazează pe Dynamics AX 2012 R3. Poate fi valabil sau nu 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:

toTable.data(fromTable);

Acest lucru funcționează bine și, în majoritatea cazurilor, este calea de urmat.

Cu toate acestea, aveți și opțiunea de a utiliza funcția buf2Buf:

buf2Buf(fromTable, toTable);

Funcționează bine și asta. 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 poate 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 folosi buf2Buf() în loc de data() este atunci când duplicați înregistrările între conturile companiei, de obicei prin utilizarea cuvântului cheie changeCompany.

De exemplu, dacă vă aflați în compania „dat” și aveți o altă companie numită „com” din care doriți să copiați toate înregistrările din CustTable:

while select crossCompany : ['com'] custTableFrom
{
    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 acea valoare ar fi fost copiată și în noul buffer.

(De fapt, ar fi dus la o eroare de cheie duplicată, dar nici asta nu este ceea ce doriți).

Distribuie pe BlueskyDistribuie pe FacebookDistribuie pe LinkedInDistribuie pe TumblrDistribuie pe XDistribuie pe LinkedInPin pe Pinterest

Mikkel Bang Christensen

Despre autor

Mikkel Bang Christensen
Mikkel este creatorul și proprietarul miklix.com. El are peste 20 de ani de experiență ca programator de calculatoare/dezvoltator software profesionist și este în prezent angajat cu normă întreagă pentru o mare corporație europeană de IT. Atunci când nu scrie pe blog, își petrece timpul liber cu o gamă largă de interese, hobby-uri și activități, care se pot reflecta într-o anumită măsură în varietatea de subiecte abordate pe acest site.