டைனமிக்ஸ் AX 2012 இல் மேக்ரோ மற்றும் strFmt உடன் சரம் வடிவமைப்பு
வெளியிடப்பட்டது: 16 பிப்ரவரி, 2025 அன்று AM 12:49:41 UTC
கடைசியாகப் புதுப்பிக்கப்பட்டது: 12 ஜனவரி, 2026 அன்று AM 8:44:41 UTC
இந்தக் கட்டுரை, strFmt-இல் மேக்ரோவை வடிவமைப்பு சரமாகப் பயன்படுத்தும் போது, டைனமிக்ஸ் AX 2012-இல் உள்ள சில விசித்திரமான நடத்தைகளையும், அதைச் சுற்றி எவ்வாறு செயல்படுவது என்பதற்கான எடுத்துக்காட்டுகளையும் விவரிக்கிறது.
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));
}
மேலும் படிக்க
இந்த இடுகை உங்களுக்குப் பிடித்திருந்தால், இந்த பரிந்துரைகளையும் நீங்கள் விரும்பலாம்:
- டைனமிக்ஸ் AX 2012 இல் X++ குறியீட்டிலிருந்து ஒரு Enum இன் கூறுகளை எவ்வாறு மறுபரிசீலனை செய்வது
- AIF ஆவண சேவைகளை X++ இலிருந்து நேரடியாக அழைக்கிறது Dynamics AX 2012
- டைனமிக்ஸ் AX 2012 இல் தரவு() மற்றும் buf2Buf() க்கு இடையிலான வேறுபாடு
