ಡೈನಾಮಿಕ್ಸ್ AX 2012 ನಲ್ಲಿ ಮ್ಯಾಕ್ರೊ ಮತ್ತು strFmt ನೊಂದಿಗೆ ಸ್ಟ್ರಿಂಗ್ ಫಾರ್ಮ್ಯಾಟಿಂಗ್
ಪ್ರಕಟಣೆ: ಫೆಬ್ರವರಿ 16, 2025 ರಂದು 12:49:43 ಪೂರ್ವಾಹ್ನ UTC ಸಮಯಕ್ಕೆ
ಈ ಲೇಖನವು StrFmt ನಲ್ಲಿ ಮ್ಯಾಕ್ರೊವನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಬಳಸುವಾಗ ಡೈನಾಮಿಕ್ಸ್ ಎಎಕ್ಸ್ 2012 ನಲ್ಲಿ ಕೆಲವು ವಿಚಿತ್ರ ನಡವಳಿಕೆಯನ್ನು ವಿವರಿಸುತ್ತದೆ, ಜೊತೆಗೆ ಅದರ ಸುತ್ತಲೂ ಹೇಗೆ ಕೆಲಸ ಮಾಡುವುದು ಎಂಬುದರ ಉದಾಹರಣೆಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ.
String Formatting with Macro and strFmt in Dynamics AX 2012
ಈ ಪೋಸ್ಟ್ ನಲ್ಲಿರುವ ಮಾಹಿತಿಯು ಡೈನಾಮಿಕ್ಸ್ ಎಎಕ್ಸ್ 2012 ಆರ್ 3 ಅನ್ನು ಆಧರಿಸಿದೆ. ಇದು ಇತರ ಆವೃತ್ತಿಗಳಿಗೆ ಮಾನ್ಯವಾಗಿರಬಹುದು ಅಥವಾ ಇಲ್ಲದಿರಬಹುದು.
ನಾನು ಇತ್ತೀಚೆಗೆ ಎಸ್ ಟಿಆರ್ ಎಫ್ ಎಂಟಿ ಕಾರ್ಯದಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ಎದುರಿಸಿದೆ, ಅದು ನನ್ನನ್ನು ಸ್ವಲ್ಪ ಗೊಂದಲಕ್ಕೀಡು ಮಾಡಿತು. ಅತ್ಯಂತ ಗೊಂದಲಮಯ ಭಾಗವೆಂದರೆ, ಆಕ್ಸಾಪ್ಟಾ / ಡೈನಾಮಿಕ್ಸ್ ಎಎಕ್ಸ್ ಡೆವಲಪರ್ ಆಗಿ ನನ್ನ ಅನೇಕ ವರ್ಷಗಳಲ್ಲಿ ನಾನು ಕೆಲವು ವಿಲಕ್ಷಣ ಕಾಕತಾಳೀಯವಾಗಿ ಅದನ್ನು ಹಿಂದೆಂದೂ ಎದುರಿಸಿಲ್ಲ.
ಸಮಸ್ಯೆಯೆಂದರೆ ನಾನು ಸ್ಟ್ರಾಫ್ಎಂಟಿ ಕಾರ್ಯಕ್ಕಾಗಿ ಮ್ಯಾಕ್ರೊವನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಬಳಸಲು ಪ್ರಯತ್ನಿಸಿದೆ ಮತ್ತು ಅದು ಕೆಲಸ ಮಾಡಲಿಲ್ಲ. ಇದು % ನಿಯತಾಂಕಗಳನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ನಿರ್ಲಕ್ಷಿಸಿತು ಮತ್ತು ಸ್ಟ್ರಿಂಗ್ ನ ಉಳಿದ ಭಾಗವನ್ನು ಮಾತ್ರ ಹಿಂದಿರುಗಿಸಿತು.
ಅದನ್ನು ನೋಡಿದ ನಂತರ, ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಫಾರ್ಮ್ಯಾಟ್ ಮಾಡಲು ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಸ್ವತಃ ಬಳಸಬಹುದು ಎಂದು ನಾನು ಕಂಡುಕೊಂಡೆ, ಅದು ನನಗೆ ತಿಳಿದಿರಲಿಲ್ಲ. ಓಹ್, ಹೊಸದನ್ನು ಕಲಿಯುವುದು ಯಾವಾಗಲೂ ಒಳ್ಳೆಯದು, ಆದರೆ ನಾನು ಇದನ್ನು ಮೊದಲು ನೋಡಿಲ್ಲ ಎಂದು ನನಗೆ ಇನ್ನೂ ಆಶ್ಚರ್ಯವಾಯಿತು.
ಮೂಲಭೂತವಾಗಿ, ಈ ರೀತಿಯದ್ದು
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
ಕೆಲಸ ಮಾಡುವುದಿಲ್ಲ ಏಕೆಂದರೆ ಮ್ಯಾಕ್ರೊದಲ್ಲಿನ % ಚಿಹ್ನೆಗಳನ್ನು ವಾಸ್ತವವಾಗಿ ಮ್ಯಾಕ್ರೊದ ಸ್ವಂತ ಸ್ಟ್ರಿಂಗ್ ಸ್ವರೂಪಣ ವೈಶಿಷ್ಟ್ಯಗಳಿಗಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, strFmt ಕಾರ್ಯವು ಫಾರ್ಮ್ಯಾಟಿಂಗ್ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು "-" ಎಂದು ನೋಡುತ್ತದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಅದನ್ನು ಮಾತ್ರ ಹಿಂದಿರುಗಿಸುತ್ತದೆ.
ಈ ರೀತಿಯದ್ದು:
info(#FormatMacro(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));
}