Miklix

Dynamics 365 में X++ कोड से वित्तीय आयाम मान अपडेट करें

प्रकाशित: 16 फ़रवरी 2025 को 12:01:47 pm UTC बजे

यह आलेख बताता है कि Dynamics 365 में X++ कोड से वित्तीय आयाम मान को कैसे अद्यतन किया जाए, जिसमें कोड उदाहरण भी शामिल है।


इस पृष्ठ को अंग्रेजी से मशीन द्वारा अनुवादित किया गया है ताकि इसे अधिक से अधिक लोगों तक पहुँचाया जा सके। दुर्भाग्य से, मशीन अनुवाद अभी तक एक पूर्ण तकनीक नहीं है, इसलिए त्रुटियाँ हो सकती हैं। यदि आप चाहें, तो आप मूल अंग्रेजी संस्करण यहाँ देख सकते हैं:

Update Financial Dimension Value from X++ Code in Dynamics 365

इस पोस्ट में दी गई जानकारी Dynamics 365 पर आधारित है। इसे Dynamics AX 2012 में भी काम करना चाहिए, लेकिन मैंने इसका स्पष्ट रूप से परीक्षण नहीं किया है।

हाल ही में मुझे किसी फॉर्म लॉजिक के आधार पर एक एकल वित्तीय आयाम के मूल्य को अद्यतन करने का कार्य सौंपा गया था।

जैसा कि आप शायद जानते हैं, Dynamics AX 2012 के बाद से वित्तीय आयामों को अलग-अलग तालिकाओं में संग्रहीत किया जाता है और RecId के माध्यम से संदर्भित किया जाता है, आमतौर पर DefaultDimension फ़ील्ड में।

आयामों को संभालने का पूरा ढांचा कुछ जटिल है और मुझे अक्सर इसके बारे में दस्तावेज दोबारा पढ़ने पड़ते हैं, शायद इसलिए क्योंकि यह ऐसी चीज नहीं है जिस पर मैं अक्सर काम करता हूं।

वैसे भी, किसी मौजूदा आयाम सेट में किसी फ़ील्ड को अपडेट करना एक ऐसी चीज़ है जो अक्सर आती है, इसलिए मैंने सोचा कि मैं अपनी पसंदीदा रेसिपी के बारे में लिखूं ;-)


एक स्थैतिक उपयोगिता विधि इस प्रकार दिख सकती है:

public static DimensionDefault updateDimension( DimensionDefault    _defaultDimension,
                                                Name                _dimensionName,
                                                DimensionValue      _dimensionValue)
{
    DimensionAttribute                  dimAttribute;
    DimensionAttributeValue             dimAttributeValue;
    DimensionAttributeValueSetStorage   dimStorage;
    DimensionDefault                    ret;
    ;

    ret             = _defaultDimension;

    ttsbegin;

    dimStorage      = DimensionAttributeValueSetStorage::find(_defaultDimension);
    dimAttribute    = DimensionAttribute::findByName(_dimensionName);

    if (_dimensionValue)
    {
        dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(  dimAttribute,
                                                                                        _dimensionValue,
                                                                                        true,
                                                                                        true);
        dimStorage.addItem(dimAttributeValue);
    }
    else
    {
        dimStorage.removeDimensionAttribute(dimAttribute.RecId);
    }

    ret = dimStorage.save();

    ttscommit;

    return ret;
}

यह विधि एक नया (या समान) DimensionDefault RecId लौटाती है, इसलिए यदि किसी रिकॉर्ड के लिए आयाम मान को अद्यतन किया जा रहा है - जो संभवतः सबसे सामान्य परिदृश्य है - तो आपको उस रिकॉर्ड पर आयाम फ़ील्ड को नए मान के साथ अद्यतन करना सुनिश्चित करना चाहिए।

ब्लूस्काई पर साझा करेंफेसबुक पर सांझा करेंलिंक्डइन पर साझा करेंटम्बलर पर साझा करेंX पर साझा करेंलिंक्डइन पर साझा करेंPinterest पर पिन करें

मिकेल बैंग क्रिस्टेंसन

लेखक के बारे में

मिकेल बैंग क्रिस्टेंसन
मिकेल miklix.com के निर्माता और मालिक हैं। उन्हें पेशेवर कंप्यूटर प्रोग्रामर/सॉफ्टवेयर डेवलपर के रूप में 20 से अधिक वर्षों का अनुभव है और वर्तमान में वे एक बड़े यूरोपीय आईटी निगम के लिए पूर्णकालिक रूप से कार्यरत हैं। जब वे ब्लॉगिंग नहीं करते हैं, तो वे अपना खाली समय विभिन्न प्रकार की रुचियों, शौक और गतिविधियों में बिताते हैं, जो कुछ हद तक इस वेबसाइट पर शामिल किए गए विषयों की विविधता में परिलक्षित हो सकते हैं।