Miklix

String Ֆորմատավորում Macro-ով եւ strFmt-ով Դինամիկայում AX 2012

Հրապարակվել է՝ 16 փետրվարի, 2025 թ., 00:49:45 UTC
Վերջին թարմացումը՝ 12 հունվարի, 2026 թ., 08:44:44 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-ումԿպցնել Պինթրեսթում

Միկել Քրիստենսեն

Հեղինակի մասին

Միկել Քրիստենսեն
Mikkel-ը miklix.com-ի ստեղծողն ու սեփականատերն է: Նա ունի ավելի քան 20 տարվա աշխատանքային փորձ՝ որպես պրոֆեսիոնալ համակարգչային ծրագրավորող/ծրագրային ապահովման մշակող և ներկայումս լրիվ դրույքով աշխատում է եվրոպական խոշոր ՏՏ կորպորացիայի մեջ: Երբ նա բլոգ չի գրում, նա իր ազատ ժամանակն անցկացնում է հետաքրքրությունների, հոբբիների և գործունեության լայն շրջանակի վրա, որոնք որոշ չափով կարող են արտացոլվել այս կայքում ընդգրկված թեմաների բազմազանության մեջ: