Formatimi i fijeve me Macro dhe strFmt në Dynamics AX 2012
Publikuar: 16 shkurt 2025 në 12:49:44 e paradites, UTC
Përditësimi i fundit: 12 janar 2026 në 8:44:43 e paradites, UTC
Ky artikull përshkruan disa sjellje të veçanta në Dynamics AX 2012 kur përdoret një makro si varg formati në strFmt, si dhe shembuj se si të punohet 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 i vlefshëm për versione të tjera.
Kohët e fundit hasa një problem me funksionin strFmt që më hutoi pak. Pjesa më e habitshme ishte se, për ndonjë rastësi të çuditshme, nuk e kisha hasur kurrë më parë në shumë vitet e mia si zhvillues i Axapta/Dynamics AX.
Problemi ishte se u përpoqa të përdorja një makro si varg formati për funksionin strFmt dhe thjesht nuk funksionoi. I injoroi plotësisht parametrat % dhe ktheu vetëm pjesën e mbetur të vargut.
Pasi e shqyrtova, zbulova se vetë makrot mund të përdoren për të formatuar vargje, gjë që gjithashtu nuk e dija. Sidoqoftë, është gjithmonë mirë të mësosh diçka të re, por prapëseprapë u habita shumë që nuk e kisha hasur rastësisht këtë më parë.
Në thelb, diçka si kjo
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Nuk do të funksionojë sepse shenjat % në makro përdoren në të vërtetë për veçoritë e formatimit të vargut të makrosë. Në këtë rast, funksioni strFmt do ta shohë vargun e formatimit si "--" dhe për këtë arsye do ta kthejë vetëm atë.
Diçka si kjo:
info(#FormatMacro(salesId,itemId,lineNum));
Do të funksionojë, por ndoshta jo ashtu siç dëshironi. Në vend që të japë vlerat e tre variablave, do të japë emrat e variablave, në këtë rast "salesId-itemId-lineNum". (Vini re se nuk vendosa hapësira pas presjeve kur kalova parametrat në makro, siç bëj zakonisht në thirrjet e metodave. Kjo sepse makroja në fakt do të përdorë edhe hapësira të tilla, kështu që rezultati do të ishte "salesId-itemId-lineNum" nëse do ta bëja).
Për të përdorur një makro si varg formatimi me strFmt, duhet t'i shmangni shenjat e përqindjes me anë të vijave të prapme, si kjo:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Kjo në të vërtetë do të funksionojë sikur ta kishit dhënë drejtpërdrejt 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));
}
Lexime të mëtejshme
Nëse ju pëlqeu ky postim, mund t'ju pëlqejnë edhe këto sugjerime:
- Përdorimi i një pyetjeje në një klasë të kontratës së të dhënave SysOperation në Dynamics AX 2012
- Gabim "Asnjë klasë metadata e përcaktuar për objektin e kontratës së të dhënave" në Dynamics AX 2012
- Dallimi midis të dhënave() dhe buf2Buf() në Dynamics AX 2012
