The Difference Between data() and buf2Buf() in Dynamics AX 2012
Nəşr olundu: 15 fevral 2025 at 22:57:04 UTC
Bu məqalə Dynamics AX 2012-də buf2Buf() və data() metodları arasındakı fərqləri, o cümlədən hər birini və X++ kod nümunəsini istifadə etmək üçün münasib olduqda izah edir.
The Difference Between data() and buf2Buf() in Dynamics AX 2012
Bu postdakı məlumatlar Dynamics AX 2012 R3 əsasında hazırlanıb. Digər versiyalar üçün də keçərli ola bilər və ya olmaya bilər.
Dynamics AX-də bütün sahələrin dəyərini bir masa buferindən digərinə köçürmək lazım gəldikdə, ənənəvi olaraq belə bir şey edərdiniz:
Bu, yaxşı işləyir və əksər hallarda yol gedir.
Bununla belə, bunun əvəzinə buf2Buf funksiyasından istifadə etmək imkanınız da var:
Bu da yaxşı işə yarayır. Bəs nə fərqi var?
Fərq ondadır ki, buf2Buf sistem sahələrini kopyalamır. Sistem sahələrinə RecId, TableId kimi sahələr daxildir və bəlkə də ən əsası bu konteksdə DataAreaId. Sonuncunun ən vacib olmasının səbəbi odur ki, data() əvəzinə buf2Buf() istifadə edəcək ən tipik hal şirkət hesabları arasında qeydləri təkrarladıqda olur. Adətən, changeCompany açar sözdən istifadə etməklə.
Məsələn, əgər siz "dat" şirkətindəsinizsə və "com" adlı başqa bir şirkətiniz varsa ki, "CustTable"da bütün rekordları buradan köçürmək istəyirsiniz:
{
buf2Buf(custTableFrom, custTableTo);
custTableTo.insert();
}
Bu halda işləyəcək, çünki buf2Buf sistem sahələri istisna olmaqla, bütün sahə dəyərlərini yeni buferə köçür. Əgər siz data() əvəzinə istifadə etsəydiniz, yeni rekord "com" şirkət hesablarına daxil olardı, çünki həmin dəyər yeni buferə də köçürülərdi.
(Əslində, bu, dublaj açar səhvi ilə nəticələnərdi, amma bu da sizin istədiyiniz kimi deyil).