डायनामिक्स एएक्स २०१२ मा म्याक्रो र एसटीआरएफएमटीसँग स्ट्रिङ ढाँचा
प्रकाशित: २०२५ फेब्रुअरी १६: ००:५२:०२ UTC
यस लेखले डायनामिक्स एएक्स २०१२ मा केही अनौठो व्यवहारको वर्णन गर्दछ जब एसटीआरएफएमटीमा ढाँचा स्ट्रिङको रूपमा म्याक्रो प्रयोग गर्दा, साथै यसको वरिपरि कसरी काम गर्ने भन्ने उदाहरणहरू।
String Formatting with Macro and strFmt in Dynamics AX 2012
यस पोस्टमा जानकारी डायनामिक्स एएक्स 2012 आर 3 मा आधारित छ। यो अन्य संस्करणका लागि मान्य हुन सक्छ वा नहुन पनि सक्छ ।
मैले हालै एसटीआरएफएमटी प्रकार्यको साथ एक मुद्दाको सामना गरें जसले मलाई केहि समयको लागि चकित पार्यो। सबैभन्दा अचम्मलाग्दो भाग यो थियो कि मैले केहि अजीब संयोगले एक्साप्टा / डायनामिक्स एएक्स विकासकर्ताको रूपमा मेरो धेरै वर्षहरूमा पहिले कहिल्यै सामना गरेको छैन।
मुद्दा यो थियो कि मैले एसटीआरएफएमटी प्रकार्यको लागि ढाँचा स्ट्रिङको रूपमा म्याक्रो प्रयोग गर्ने प्रयास गरें र यसले काम गरेन। यसले % परिमितिहरूलाई पूर्ण रूपमा उपेक्षा गर् यो र स्ट्रिङको बाँकी भाग मात्र फर्कायो।
यसलाई हेरेपछि, मैले पत्ता लगाएँ कि म्याक्रोहरू आफैलाई स्ट्रिंगहरू ढाँचाबद्ध गर्न प्रयोग गर्न सकिन्छ, जुन मलाई थाहा नभएको कुरा पनि थियो। ओह ठीक छ, यो सधैं केहि नयाँ सिक्न राम्रो छ, तर म अझै पनि धेरै आश्चर्यचकित थिएँ कि म पहिले यो भरमा आएको थिइनँ।
मूलतः, यस प्रकारको केहि
;
info(strFmt(#FormatMacro, salesId, itemId, lineNum));
काम गर्दैन किनभने म्याक्रोमा % सङ्केतहरू वास्तवमा म्याक्रोको आफ्नै स्ट्रिङ ढाँचा सुविधाहरूका लागि प्रयोग गरिन्छ । यस अवस्थामा, एसटीआरएफएमटी प्रकार्यले ढाँचा स्ट्रिङलाई "--" को रूपमा हेर्नेछ र यसैले मात्र यसलाई फिर्ता गर्नेछ।
केहि यस्तो छ:
info(#FormatMacro(salesId,itemId,lineNum));
काम गर्नेछ, तर सम्भवतः तपाईं यसलाई चाहनुहुन्छ तरिका छैन. तीन चरहरूको मानहरू आउटपुट गर्नुको सट्टा, यसले यसको सट्टा चरहरूको नामहरू आउटपुट गर्नेछ, यस मामलामा "सेल्सआईडी-आइटमआईडी-लाइननम"। (ध्यान दिनुहोस् कि मैले म्याक्रोमा प्यारामिटरहरू पास गर्दा अल्पविराम पछि खाली स्थानहरू राखेन, किनकि म सामान्यतया विधि कलहरूमा गर्छु। यसको कारण यो हो कि म्याक्रोले वास्तवमा त्यस्ता खाली स्थानहरू पनि प्रयोग गर्नेछ, त्यसैले आउटपुट "सेल्सआईडी- आइटमआईडी- लाइननम" हुनेछ यदि मैले गरें भने)।
वास्तवमा एसटीआरएफएमटीसँग ढाँचा स्ट्रिङको रूपमा म्याक्रो प्रयोग गर्न, तपाईँले ब्याकस्ल्याशहरूसँग प्रतिशत सङ्केतहरूबाट बच्न आवश्यक छ, जस्तै:
;
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));
}