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 ֆունկցիայի ձևաչափի տող, և այն պարզապես չաշխատեց։ Այն ամբողջությամբ անտեսեց % պարամետրերը և վերադարձրեց միայն տողի մնացած մասը։
Ուսումնասիրելուց հետո ես հայտնաբերեցի, որ մակրոները կարող են օգտագործվել տողերը ձևաչափելու համար, ինչը նույնպես ես չգիտեի: Դե ինչ, միշտ լավ է ինչ-որ նոր բան սովորելը, բայց ես դեռ շատ զարմացա, որ նախկինում պատահաբար չէի հանդիպել դրան:
Հիմնականում, այսպիսի մի բան
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
չի աշխատի, քանի որ մակրոյի % նշանները իրականում օգտագործվում են մակրոյի սեփական տողերի ձևաչափման գործառույթների համար: Այս դեպքում strFmt ֆունկցիան ձևաչափման տողը կտեսնի որպես "--" և, հետևաբար, կվերադարձնի միայն դա:
Նման մի բան՝
info(#FormatMacro(salesId,itemId,lineNum));
կաշխատի, բայց հավանաբար ոչ այնպես, ինչպես դուք կցանկանայիք։ Երեք փոփոխականների արժեքները արտածելու փոխարեն, այն կարտածի փոփոխականների անունները, այս դեպքում՝ "salesId-itemId-lineNum": (Նկատի ունեցեք, որ մակրոյին պարամետրեր փոխանցելիս ես ստորակետերից հետո բացատներ չեմ դրել, ինչպես սովորաբար անում եմ մեթոդների կանչերի ժամանակ։ Դա պայմանավորված է նրանով, որ մակրոն իրականում կօգտագործի նաև նման բացատներ, ուստի արդյունքը կլինի "salesId-itemId-lineNum"՝ այդ դեպքում):
Որպեսզի մակրոն strFmt-ով ձևաչափի տողի համար օգտագործեք, տոկոսային նշաններից դուրս գալը պետք է կատարեք հակառակ թեք գծերով, ինչպես հետևյալն է՝
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Սա իրականում կաշխատի այնպես, կարծես դուք ուղղակիորեն տրամադրել եք ձևաչափի տողը։
Այս փոքրիկ աշխատանքը ցույց է տալիս օրինակները.
{
#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));
}
Լրացուցիչ ընթերցանություն
Եթե ձեզ դուր եկավ այս գրառումը, ձեզ կարող են նաև դուր գալ այս առաջարկները.
- Dynamics AX 2012 SysOperation Framework Արագ ակնարկ
- Փաստաթղթերի դասի և հարցումների նույնականացում AIF ծառայության համար Dynamics AX 2012-ում
- Օգտվելով SysExtension Framework-ի միջոցով պարզել, թե որ ենթադասի միջոցով է միանգամից դինամիկայում AX 2012
