Dynamics AX 2012-ൽ മാക്രോ, strFmt എന്നിവ ഉപയോഗിച്ച് String Formatting
പ്രസിദ്ധീകരിച്ചത്: 2025, ഫെബ്രുവരി 16 12:51:22 AM UTC
അവസാനം അപ്ഡേറ്റ് ചെയ്തത്: 2026, ജനുവരി 12 8:44:46 AM UTC
strFmt-യിൽ ഫോർമാറ്റ് സ്ട്രിംഗായി മാക്രോ ഉപയോഗിക്കുമ്പോൾ ഡൈനാമിക്സ് AX 2012-ലെ ചില പ്രത്യേക പെരുമാറ്റരീതികളും അത് എങ്ങനെ പരിഹരിക്കാമെന്നതിനുള്ള ഉദാഹരണങ്ങളും ഈ ലേഖനം വിവരിക്കുന്നു.
String Formatting with Macro and strFmt in Dynamics AX 2012
ഈ പോസ്റ്റിലെ വിവരങ്ങൾ ഡൈനാമിക്സ് 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-ലെ X++ കോഡിൽ നിന്ന് ഒരു ഇനത്തിന്റെ മൂലകങ്ങൾ എങ്ങനെ മറികടക്കാം
- ഡൈനാമിക്സ് AX 2012-ൽ AIF സേവനത്തിനായുള്ള ഡോക്യുമെന്റ് ക്ലാസും അന്വേഷണവും തിരിച്ചറിയൽ.
- Dynamics AX 2012-ൽ "ഡാറ്റാ കോൺട്രാക്റ്റ് ഒബ്ജക്റ്റിനായി മെറ്റാഡാറ്റ ക്ലാസ് നിർവചിച്ചിട്ടില്ല" എന്ന പിശക്
