Virknes formatēšana, izmantojot makro un strFmt programmā Dynamics AX 2012
Publicēts: 2025. gada 16. februāris 00:48:43 UTC
Pēdējo reizi atjaunināts: 2026. gada 12. janvāris 08:44:28 UTC
Šajā rakstā ir aprakstīta īpaša Dynamics AX 2012 darbība, izmantojot makro kā formāta virkni strFmt, kā arī sniegti piemēri, kā to apiet.
String Formatting with Macro and strFmt in Dynamics AX 2012
Šajā ierakstā sniegtā informācija ir balstīta uz Dynamics AX 2012 R3. Tā var būt vai nebūt derīga citām versijām.
Nesen saskāros ar problēmu ar strFmt funkciju, kas mani nedaudz mulsināja. Visvairāk mulsināja tas, ka kaut kādas dīvainas sakritības dēļ es nekad iepriekš nebiju ar to saskāries savos daudzajos Axapta/Dynamics AX izstrādātāja darba gados.
Problēma bija tā, ka es mēģināju izmantot makro kā formatēšanas virkni funkcijai strFmt, bet tas vienkārši nedarbojās. Tas pilnībā ignorēja % parametrus un atgrieza tikai atlikušo virknes daļu.
Pēc iedziļināšanās atklāju, ka pašus makro var izmantot virkņu formatēšanai, ko arī nezināju. Nu neko, vienmēr ir labi iemācīties kaut ko jaunu, bet mani joprojām ļoti pārsteidza, ka iepriekš nebiju ar to saskāries.
Būtībā kaut kas līdzīgs šim
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Nedarbosies, jo makro % zīmes faktiski tiek izmantotas paša makro virknes formatēšanas funkcijām. Šajā gadījumā funkcija strFmt redzēs formatēšanas virkni kā "--" un tāpēc atgriezīs tikai to.
Kaut kas līdzīgs šim:
info(#FormatMacro(salesId,itemId,lineNum));
Darbosies, bet, iespējams, ne tā, kā vēlaties. Tā vietā, lai izvadītu trīs mainīgo vērtības, tiks izvadīti mainīgo nosaukumi, šajā gadījumā "salesId-itemId-lineNum". (Ņemiet vērā, ka, nododot parametrus makro, es neievietoju atstarpes aiz komatiem, kā parasti daru metožu izsaukumos. Tas ir tāpēc, ka makro faktiski izmantos arī šādas atstarpes, tāpēc izvade būtu "salesId-itemId-lineNum", ja es to darītu).
Lai faktiski izmantotu makro kā formatēšanas virkni ar strFmt, procentu zīmes ir jāaizstāj ar atpakaļvērstajām slīpsvītrām, piemēram:
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
Tas faktiski darbosies tā, it kā jūs būtu tieši norādījis formāta virkni.
Šis mazais darbs ilustrē piemērus:
{
#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));
}
Papildu lasāmviela
Ja jums patika šī ziņa, jums varētu patikt arī šie ieteikumi:
- Dynamics AX 2012 SysOperation Framework īss pārskats
- Dynamics AX 2012 konvertējiet reālu par virkni ar visām decimāldaļām
- Dzēsiet juridisko personu (uzņēmuma kontus) programmā Dynamics AX 2012
