Dynamics AX 2012-də Macro və strFmt ilə String Formatting
Nəşr olundu: 16 fevral 2025 at 00:52:33 UTC
Son yeniləmə: 12 yanvar 2026 at 08:44:50 UTC
Bu məqalədə Dynamics AX 2012-də strFmt-də format sətri kimi makro istifadə edərkən bəzi qəribə davranışlar, eləcə də bunun ətrafında necə işləmək barədə nümunələr təsvir olunur.
String Formatting with Macro and strFmt in Dynamics AX 2012
Bu yazıdakı məlumat Dynamics AX 2012 R3-ə əsaslanır. Digər versiyalar üçün keçərli ola bilər və ya olmaya da bilər.
Bu yaxınlarda strFmt funksiyası ilə bağlı bir problemlə qarşılaşdım və bu, məni bir az çaşdırdı. Ən çaşdırıcısı o idi ki, qəribə bir təsadüf nəticəsində Axapta/Dynamics AX geliştiricisi kimi uzun illər ərzində heç vaxt bununla qarşılaşmamışdım.
Problem ondadır ki, strFmt funksiyası üçün format sətri kimi makrodan istifadə etməyə çalışdım və o, sadəcə işləmədi. O, % parametrlərini tamamilə nəzərə almadı və yalnız sətrin qalan hissəsini qaytardı.
Bunu araşdırdıqdan sonra makroların özlərinin sətirləri formatlamaq üçün istifadə edilə biləcəyini kəşf etdim ki, bu da mənim bilmədiyim bir şey idi. Hə, yeni bir şey öyrənmək həmişə yaxşıdır, amma yenə də əvvəllər buna rast gəlmədiyim üçün çox təəccübləndim.
Əsasən, buna bənzər bir şey
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Işləməyəcək, çünki makrodakı % işarələri əslində makronun öz sətir formatlama xüsusiyyətləri üçün istifadə olunur. Bu halda, strFmt funksiyası formatlama sətrini "--" kimi görəcək və buna görə də yalnız onu qaytaracaq.
Bu kimi bir şey:
info(#FormatMacro(salesId,itemId,lineNum));
Işləyəcək, amma yəqin ki, istədiyiniz kimi deyil. Üç dəyişənin dəyərlərini çıxarmaq əvəzinə, dəyişənlərin adlarını, bu halda "salesId-itemId-lineNum"-u çıxaracaq. (Diqqət yetirin ki, parametrləri makroya ötürərkən, adətən metod çağırışlarında etdiyim kimi, vergüllərdən sonra boşluq qoymadım. Çünki makro əslində bu cür boşluqlardan da istifadə edəcək, ona görə də çıxarış "salesId-itemId-lineNum" olardı).
Makronu strFmt ilə formatlaşdırma sətri kimi istifadə etmək üçün faiz işarələrindən geri əyri xətlərlə qaçmaq lazımdır, məsələn:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Bu, əslində format sətrini birbaşa təqdim etdiyiniz kimi işləyəcək.
Bu kiçik iş nümunələri göstərir:
{
#define.FormatMacro('%1-%2-%3')
#define.FormatMacroEscaped('\\%1-\\%2-\\%3')
SalesId salesId = '1';
ItemId itemId = '2';
LineNum lineNum = 3.00;
;
info(#FormatMacro(salesId,itemId,lineNum));
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
info(strFmt(#FormatMacroEscaped, salesId, itemId, lineNum));
}
Əlavə Oxu
Bu yazı xoşunuza gəldisə, bu təklifləri də bəyənə bilərsiniz:
- Dynamics AX 2012-də Hüquqi Şəxsi (Şirkət Hesabları) silin
- Dynamics AX 2012-də SysOperation Data Müqavilə Sinifində Sorğunun İstifadəsi
- Dynamics AX 2012-də "Məlumat müqaviləsi obyekti üçün metadata sinfi müəyyən edilməmişdir" xətası
