Miklix

Eilučių formatavimas naudojant makrokomandą ir strFmt sistemoje „Dynamics AX 2012“.

Paskelbta: 2025 m. vasario 16 d. 00:48:42 UTC

Šiame straipsnyje aprašomas tam tikras ypatingas Dynamics AX 2012 elgesys, kai makrokomandą naudojate kaip formato eilutę strFmt, taip pat pateikiami pavyzdžiai, kaip ją apeiti.


Šis puslapis buvo mašininiu būdu išverstas iš anglų kalbos, kad juo galėtų naudotis kuo daugiau žmonių. Deja, mašininis vertimas dar nėra tobula technologija, todėl gali pasitaikyti klaidų. Jei pageidaujate, originalią versiją anglų kalba galite peržiūrėti čia:

String Formatting with Macro and strFmt in Dynamics AX 2012

Šiame įraše pateikta informacija pagrįsta Dynamics AX 2012 R3. Jis gali galioti arba negalioja kitoms versijoms.

Neseniai susidūriau su strFmt funkcijos problema, kuri mane šiek tiek suglumino. Labiausiai glumina tai, kad per tam tikrą keistą sutapimą per daugelį savo „Axapta/Dynamics AX“ kūrėjo metų niekada su tuo nesusidūriau.

Problema ta, kad bandžiau naudoti makrokomandą kaip strFmt funkcijos formato eilutę ir ji tiesiog neveikė. Jis visiškai nepaisė % parametrų ir grąžino tik likusią eilutės dalį.

Panagrinėjęs, sužinojau, kad pačios makrokomandos gali būti naudojamos eilėms formatuoti, o to aš taip pat nežinojau. Na, visada gera išmokti ką nors naujo, bet vis tiek buvau labai nustebęs, kad man dar neteko su tuo susidurti.

Iš esmės kažkas panašaus

#define.FormatMacro('%1-%2-%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

neveiks, nes makrokomandoje esantys % ženklai iš tikrųjų naudojami pačios makrokomandos eilutės formatavimo funkcijoms. Tokiu atveju funkcija strFmt matys formatavimo eilutę kaip „--“, todėl ją grąžins tik.

Kažkas panašaus:

#define.FormatMacro('%1-%2-%3');
info(#FormatMacro(salesId,itemId,lineNum));

veiks, bet tikriausiai ne taip, kaip norite. Vietoj to, kad būtų pateiktos trijų kintamųjų reikšmės , bus išvesti kintamųjų pavadinimai , šiuo atveju „salesId-itemId-lineNum“. (Atkreipkite dėmesį, kad perduodamas parametrus makrokomandai nedėjau tarpų po kablelių, kaip dažniausiai darau metodų iškvietime. Taip yra todėl, kad makrokomandoje taip pat bus naudojami tokie tarpai, todėl išvestis būtų „salesId-itemId-lineNum“, jei tai padaryčiau).

Norėdami iš tikrųjų naudoti makrokomandą kaip formatavimo eilutę su strFmt, turite atsisakyti procentinių ženklų su pasviraisiais brūkšniais, kaip nurodyta taip:

#define.FormatMacro('\\%1-\\%2-\\%3')
;

info(strFmt(#FormatMacro, salesId, itemId, lineNum));

Tai iš tikrųjų veiks taip, lyg būtumėte tiesiogiai pateikę formato eilutę.

Šis mažas darbas iliustruoja pavyzdžius:

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));
}
Pasidalinkite „Bluesky“.Dalintis FacebookBendrinkite „LinkedIn“.Bendrinkite „Tumblr“.Dalintis XBendrinkite „LinkedIn“.Prisegti prie Pinterest

Mikkel Bang Christensen

Apie autorių

Mikkel Bang Christensen
Mikkelis yra miklix.com kūrėjas ir savininkas. Jis turi daugiau nei 20 metų profesionalaus kompiuterių programuotojo ir programinės įrangos kūrėjo patirtį ir šiuo metu visą darbo dieną dirba didelėje Europos IT korporacijoje. Kai jis nerašo tinklaraščio, laisvalaikį skiria įvairiems interesams, pomėgiams ir užsiėmimams, kurie tam tikra prasme gali atsispindėti šioje svetainėje nagrinėjamų temų įvairovėje.