Formatimi i fijeve me Macro dhe strFmt në Dynamics AX 2012
Publikuar: 16 shkurt 2025 në 12:49:44 e paradites, UTC
Ky artikull përshkruan disa sjellje të veçanta në Dynamics AX 2012 kur përdorni një makro si varg formati në strFmt, si dhe shembuj se si të punoni rreth tij.
String Formatting with Macro and strFmt in Dynamics AX 2012
Informacioni në këtë postim bazohet në Dynamics AX 2012 R3. Mund të jetë ose jo e vlefshme për versione të tjera.
Kohët e fundit hasa një problem me funksionin strFmt që më hutoi për pak. Pjesa më hutuese ishte se unë nga ndonjë rastësi e çuditshme nuk e kam hasur kurrë më parë në vitet e mia të shumta si zhvillues Axapta/Dynamics AX.
Çështja ishte se u përpoqa të përdorja një makro si string formati për funksionin strFmt dhe thjesht nuk funksionoi. Ajo injoroi plotësisht parametrat % dhe vetëm ktheu pjesën e mbetur të fijes.
Pasi e shqyrtova, zbulova se makrot vetë mund të përdoren për të formatuar fijet, gjë që ishte edhe diçka që nuk e dija. Oh, është gjithmonë mirë të mësosh diçka të re, por ende isha shumë i habitur që nuk kisha ndodhur ta hasja këtë më parë.
Në thelb, diçka e tillë
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Nuk do të funksionojë sepse shenjat % në makro janë përdorur në të vërtetë për veçoritë e vetë formatimit të fijeve të makros. Në këtë rast, funksioni strFmt do ta shohë vargun e formatimit si "--" dhe për këtë arsye vetëm do ta kthejë atë.
Diçka e tillë:
info(#FormatMacro(salesId,itemId,lineNum));
Do të funksionojë, por ndoshta jo ashtu siç e do ti. Në vend që të nxjerrë vlerat e tre variablave, ajo do të nxjerrë emrat e variablave në vend të kësaj, në këtë rast "salesId-itemId-lineNum". (Vini re se nuk kam vënë hapësira pas kommasit kur kaloj parametrat në makro, siç bëj zakonisht në thirrjet e metodës. Kjo për shkak se makro në fakt do të përdorë hapësira të tilla gjithashtu, kështu që dalja do të ishte "salesId- itemId- lineNum" nëse do ta bëja).
Për të përdorur në fakt një makro si string formatimi me strFmt, ju duhet t'i shpëtoni shenjave të përqindjes me backslashes, si kjo:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Kjo në fakt do të funksionojë sikur të kishit furnizuar direkt vargun e formatit.
Kjo punë e vogël ilustron shembujt:
{
#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));
}