Miklix

تحديث قيمة البعد المالي من كود X++ في Dynamics 365

نُشرت: ١٦ فبراير ٢٠٢٥ م في ١٢:٠٠:٥٠ م 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 جديدًا (أو نفس المعرف)، لذلك إذا كنت تقوم بتحديث قيمة البعد لسجل - وهو على الأرجح السيناريو الأكثر شيوعًا - فيجب عليك التأكد من تحديث حقل البعد في هذا السجل بالقيمة الجديدة.

شارك على بلوسكايشارك على الفيسبوكشارك على لينكدإنشارك على تمبلرشارك على إكسشارك على لينكدإنثبت على بينتريست

ميكيل بانج كريستنسن

عن المؤلف

ميكيل بانج كريستنسن
ميكيل هو مؤسس ومالك موقع miklix.com. يتمتع بخبرة تزيد عن 20 عامًا كمبرمج كمبيوتر/مطور برامج محترف ويعمل حاليًا بدوام كامل في إحدى شركات تكنولوجيا المعلومات الأوروبية الكبرى. عندما لا يقوم بالتدوين، يقضي وقت فراغه في مجموعة واسعة من الاهتمامات والهوايات والأنشطة، والتي قد تنعكس إلى حد ما في تنوع الموضوعات التي يغطيها هذا الموقع.