Miklix

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.


Bu səhifə mümkün qədər çox insan üçün əlçatan olması üçün ingilis dilindən maşın tərcümə edilib. Təəssüf ki, maşın tərcüməsi hələ mükəmməl texnologiya deyil, ona görə də səhvlər baş verə bilər. İstəyirsinizsə, orijinal ingilis versiyasına buradan baxa bilərsiniz:

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:

toTable.data(fromTable);

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:

buf2Buf(fromTable, toTable);

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:

while select crossCompany : ['com'] custTableFrom
{
    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).

Bluesky-də paylaşınFacebookda paylaşLinkedIn-də paylaşınTumblr-da paylaşınX-də paylaşınLinkedIn-də paylaşınPinterest-də Pin

Mikkel Bang Christensen

Müəllif haqqında

Mikkel Bang Christensen
Mikkel miklix.com saytının yaradıcısı və sahibidir. O, peşəkar kompüter proqramçısı/proqram təminatı tərtibatçısı kimi 20 ildən artıq təcrübəyə malikdir və hazırda böyük Avropa İT korporasiyasında tam iş günü işləyir. Bloq yazmayanda o, boş vaxtını geniş çeşidli maraqlara, hobbilərə və fəaliyyətlərə sərf edir ki, bu da müəyyən dərəcədə bu veb-saytda əhatə olunan müxtəlif mövzularda əks oluna bilər.