Miklix

Dynamics AX 2012 дээрх Макро болон strFmt-ээр мөр форматлах

Нийтэлсэн: 2025 оны гуравдугаар сарын 19 21:33:08 (UTC)

Энэ нийтлэлд Dynamics AX 2012-д макрог strFmt-д форматын мөр болгон ашиглах үед гардаг зарим онцлог шинж чанаруудыг тайлбарлахаас гадна үүнийг тойрон гарах жишээнүүдийг тайлбарласан болно.


Энэ хуудсыг аль болох олон хүнд хүртээмжтэй болгох үүднээс англи хэлнээс орчуулсан. Харамсалтай нь машин орчуулга нь төгс төгөлдөр технологи болоогүй байгаа тул алдаа гарч болзошгүй. Хэрэв та хүсвэл англи хэл дээрх эх хувилбарыг эндээс үзэх боломжтой.

String Formatting with Macro and strFmt in Dynamics AX 2012

Энэхүү нийтлэл дэх мэдээлэл нь Dynamics AX 2012 R3 дээр үндэслэгдсэн болно. Энэ нь бусад хувилбаруудад хүчинтэй эсвэл хүчинтэй биш байж болох юм.

Саяхан би strFmt функцтэй холбоотой асуудалтай тулгарсан бөгөөд энэ нь намайг бага зэрэг гайхшруулсан. Хамгийн гайхмаар зүйл нь би ямар нэгэн учраар олон жилийн турш Axapta/Dynamics AX хөгжүүлэгчээр ажиллаж байсан ч энэ асуудалтай өмнө нь таарч байгаагүй явдал байв.

Асуудал нь би strFmt функцэд формат строкоор макрог ашиглахыг оролдсон бөгөөд энэ нь ажиллахгүй байсан явдал юм. Энэ нь % параметрүүдийг бүрэн үл тоомсорлож, зөвхөн строкийн үлдэгдлийг буцааж байсан.

Шалгаж үзсэний дараа, би макрог өөрсдөө строкиг форматлахад ашиглаж болохыг олж мэдсэн бөгөөд энэ нь бас миний мэдээгүй зүйл байв. Тэгэхээр, шинэ зүйл сурсан нь сайн хэрэг, гэхдээ би энэ асуудалтай өмнө нь таарч байгаагүйд үнэхээр гайхсан.

Үндсэндээ, иймэрхүү зүйл:

#define.FormatMacro('%1-%2-%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

ажиллахгүй, учир нь макрогийн % тэмдэгтүүд нь макрогийн өөрийн строкийн форматлах боломжийг ашиглахад зориулагдсан байдаг. Энэ тохиолдолд, strFmt функц формат строкийг "--" гэж үзэх бөгөөд зөвхөн үүнийг буцааж өгөх болно.

Ийм зүйл:

#define.FormatMacro('%1-%2-%3');
info(#FormatMacro(salesId,itemId,lineNum));

ажиллах боловч магадгүй та хүссэнээрээ байхгүй. Гурван хувьсагчийн утгууд-ийг гаргахын оронд, тэдний нэрс-ийг гаргах болно, энэ тохиолдолд "salesId-itemId-lineNum". (Санамж: би параметрүүдийг макрогт дамжуулахдаа, ихэвчлэн арга дуудлагуудын үед хийдэг шиг, таслалаас хойш орон зай тавиагүйг анзаарна уу. Учир нь макро нь эдгээр орон зайг ашиглах бөгөөд ингэснээр гаралт нь "salesId- itemId- lineNum" болно.)

strFmt-тэй формат строкоор макро ашиглахын тулд, та хувьсагч тэмдэгтүүдийг буцааж орхих шаардлагатай, ингэснээр иймэрхүү зүйл:

#define.FormatMacro('\\%1-\\%2-\\%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

Энэ нь яг л та формат строкийг шууд оруулсан мэт ажиллах болно.

Энэ жижиг ажил нь жишээг илэрхийлнэ:

static void StrFmtMacroTest(Args _args)
{
    #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));
}
Bluesky дээр хуваалцаарайFacebook дээр хуваалцахLinkedIn дээр хуваалцахTumblr дээр хуваалцахX дээр хуваалцаарайLinkedIn дээр хуваалцахPinterest дээрх пин

Миккел Кристенсен

Зохиогчийн тухай

Миккел Кристенсен
Миккел бол miklix.com сайтыг бүтээгч, эзэмшигч юм. Тэрээр мэргэжлийн компьютерийн программист/програм хангамж хөгжүүлэгчээр 20 гаруй жил ажилласан туршлагатай бөгөөд одоогоор Европын томоохон мэдээллийн технологийн корпорацид бүтэн цагаар ажиллаж байна. Блог хөтлөөгүй үедээ тэрээр чөлөөт цагаа олон төрлийн сонирхол, хобби, үйл ажиллагаанд зарцуулдаг бөгөөд энэ нь энэ вэб сайтад багтсан олон янзын сэдвүүдэд тодорхой хэмжээгээр тусгагдсан байж магадгүй юм.