Uumbizaji wa Kamba na Macro na strFmt katika Dynamics AX 2012
Iliyochapishwa: 16 Februari 2025, 00:49:11 UTC
Makala hii inaelezea tabia ya kipekee katika Dynamics AX 2012 wakati wa kutumia macro kama kamba ya muundo katika strFmt, pamoja na mifano juu ya jinsi ya kufanya kazi karibu nayo.
String Formatting with Macro and strFmt in Dynamics AX 2012
Habari katika chapisho hili inategemea Dynamics AX 2012 R3. Inaweza au haiwezi kuwa halali kwa matoleo mengine.
Hivi karibuni nilikutana na suala na kazi ya strFmt ambayo ilinishangaza kidogo. Sehemu ya kushangaza zaidi ni kwamba mimi kwa bahati mbaya ya ajabu sijawahi kukutana nayo hapo awali katika miaka yangu mingi kama msanidi programu wa Aqapta / Dynamics AX.
Suala lilikuwa kwamba nilijaribu kutumia macro kama kamba ya umbizo kwa kazi ya strFmt na haikufanya kazi. Ilipuuza kabisa vigezo vya % na ilirudisha tu kamba iliyobaki.
Baada ya kuiangalia, niligundua kuwa macros wenyewe zinaweza kutumika kuunda kamba, ambayo pia ilikuwa kitu ambacho sikujua. Oh vizuri, daima ni vizuri kujifunza kitu kipya, lakini bado nilishangaa sana kwamba sikuwa nimekutana na hii hapo awali.
Kwa ujumla, kitu kama hiki
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
haitafanya kazi kwa sababu ishara za % katika makro hutumiwa kwa vipengele vya muundo wa kamba ya macro. Katika kesi hii, kazi ya strFmt itaona kamba ya uumbizaji kama "-" na kwa hivyo itarudi tu.
Kitu kama hiki:
info(#FormatMacro(salesId,itemId,lineNum));
Itafanya kazi, lakini labda sio jinsi unavyotaka. Badala ya kutoa maadili ya vigezo vitatu, itatoa majina ya vigezo badala yake, katika kesi hii "salesId-itemId-lineNum". (Tambua kwamba sikuweka nafasi baada ya koma wakati wa kupitisha vigezo kwa macro, kama kawaida mimi hufanya katika simu za njia. Hiyo ni kwa sababu macro itatumia nafasi kama hizo pia, kwa hivyo pato litakuwa "salesId- itemId- lineNum" ikiwa nilifanya).
Kwa kweli kutumia macro kama kamba ya muundo na strFmt, unahitaji kuepuka ishara za asilimia na backslashes, kama hii:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Hii itafanya kazi kama vile ulikuwa umetoa kamba ya umbizo moja kwa moja.
Kazi hii ndogo inaonyesha mifano:
{
#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));
}