Dynamics AX 2012-ൽ മാക്രോ, strFmt എന്നിവ ഉപയോഗിച്ച് String Formatting
പ്രസിദ്ധീകരിച്ചത്: 2025, ഫെബ്രുവരി 16 12:51:22 AM UTC
ഈ ലേഖനം ഡൈനാമിക്സ് AX 2012 ൽ ഒരു മാക്രോ ഫോർമാറ്റ് സ്ട്രിംഗായി ഉപയോഗിക്കുമ്പോൾ ചില വിചിത്രമായ പെരുമാറ്റത്തെ വിവരിക്കുന്നു, അതുപോലെ തന്നെ അതിന് ചുറ്റും എങ്ങനെ പ്രവർത്തിക്കാം എന്നതിനെക്കുറിച്ചുള്ള ഉദാഹരണങ്ങളും.
String Formatting with Macro and strFmt in Dynamics AX 2012
Dynamics AX 2012 R3 അടിസ്ഥാനമാക്കിയുള്ളതാണ് ഈ പോസ്റ്റിലെ വിവരങ്ങൾ. ഇത് മറ്റ് പതിപ്പുകൾക്ക് സാധുതയുള്ളതോ അല്ലാത്തതോ ആകാം.
അടുത്തിടെ strFmt ഫംഗ്ഷനുമായി ബന്ധപ്പെട്ട ഒരു പ്രശ്നം ഞാൻ അഭിമുഖീകരിച്ചു, അത് എന്നെ അൽപ്പം ആശയക്കുഴപ്പത്തിലാക്കി. ഏറ്റവും അമ്പരപ്പിക്കുന്ന ഭാഗം, ഒരു ആക്സാപ്ത / ഡൈനാമിക്സ് എഎക്സ് ഡെവലപ്പർ എന്ന നിലയിലുള്ള എന്റെ നിരവധി വർഷങ്ങളിൽ വിചിത്രമായ യാദൃശ്ചികതയിലൂടെ ഞാൻ മുമ്പൊരിക്കലും ഇത് അഭിമുഖീകരിച്ചിട്ടില്ല എന്നതാണ്.
strFmt ഫംഗ്ഷനുള്ള ഫോർമാറ്റ് സ്ട്രിംഗായി ഒരു മാക്രോ ഉപയോഗിക്കാൻ ഞാൻ ശ്രമിച്ചു, അത് പ്രവർത്തിച്ചില്ല എന്നതാണ് പ്രശ്നം. ഇത് % പാരാമീറ്ററുകൾ പൂർണ്ണമായും അവഗണിക്കുകയും സ്ട്രിംഗിന്റെ ശേഷിക്കുന്ന ഭാഗം മാത്രം തിരികെ നൽകുകയും ചെയ്തു.
ഇത് പരിശോധിച്ച ശേഷം, സ്ട്രിംഗുകൾ ഫോർമാറ്റ് ചെയ്യാൻ മാക്രോകൾ തന്നെ ഉപയോഗിക്കാമെന്ന് ഞാൻ കണ്ടെത്തി, അതും എനിക്ക് അറിയാത്ത ഒന്നായിരുന്നു. ഓ, പുതിയ എന്തെങ്കിലും പഠിക്കുന്നത് എല്ലായ്പ്പോഴും നല്ലതാണ്, പക്ഷേ ഞാൻ ഇത് മുമ്പ് കണ്ടിട്ടില്ല എന്നതിൽ ഞാൻ ഇപ്പോഴും വളരെ ആശ്ചര്യപ്പെട്ടു.
അടിസ്ഥാനപരമായി, ഇതുപോലൊന്ന്
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
മാക്രോയിലെ % ചിഹ്നങ്ങൾ യഥാർത്ഥത്തിൽ മാക്രോയുടെ സ്വന്തം സ്ട്രിംഗ് ഫോർമാറ്റിംഗ് സവിശേഷതകൾക്കായി ഉപയോഗിക്കുന്നതിനാൽ ഇത് പ്രവർത്തിക്കില്ല. ഈ സാഹചര്യത്തിൽ, strFmt ഫംഗ്ഷൻ ഫോർമാറ്റിംഗ് സ്ട്രിംഗ് "-" ആയി കാണും, അതിനാൽ അത് മാത്രമേ തിരികെ നൽകൂ.
ഇതുപോലൊന്ന്:
info(#FormatMacro(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));
}