Miklix

עדכן את ערך הממד הפיננסי מקוד X++ ב- Dynamics 365

פורסם: 16 בפברואר 2025 בשעה 12:01:59 UTC
עודכן לאחרונה: 13 בנובמבר 2025 בשעה 13:38:21 UTC

מאמר זה מסביר כיצד לעדכן ערך של ממד פיננסי מקוד X++ ב-Dynamics 365, כולל דוגמת קוד.


עמוד זה תורגם במכונה מאנגלית על מנת להנגיש אותו לכמה שיותר אנשים. למרבה הצער, תרגום מכונה עדיין אינו טכנולוגיה משוכללת, ולכן עלולות להתרחש שגיאות. אם אתה מעדיף, תוכל לצפות בגרסה האנגלית המקורית כאן:

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 חדש (או זהה), כך שאם מעדכנים ערך ממד עבור רשומה - שזה כנראה התרחיש הנפוץ ביותר - עליכם לוודא שאתם מעדכנים את שדה הממד ברשומה זו בערך החדש.

קריאה נוספת

אם נהניתם מהפוסט הזה, אולי תאהבו גם את ההצעות הבאות:


שתפו בבלוסקישתפו בפייסבוקשתפו בלינקדאיןשתפו ב-Tumblrשתפו ב-Xשתפו בלינקדאיןהצמד בפינטרסט

מיקל כריסטנסן

על המחבר

מיקל כריסטנסן
מיקל הוא היוצר והבעלים של miklix.com. יש לו למעלה מ-20 שנות ניסיון כמתכנת מחשבים/מפתח תוכנה מקצועי וכיום הוא מועסק במשרה מלאה בתאגיד IT אירופאי גדול. כשהוא לא כותב בלוג, הוא מבלה את זמנו הפנוי במגוון עצום של תחומי עניין, תחביבים ופעילויות, שעשויים לבוא לידי ביטוי במידה מסוימת במגוון הנושאים המכוסים באתר זה.