Miklix

Kemas kini Nilai Dimensi Kewangan daripada Kod X++ dalam Dynamics 365

Diterbitkan: 19 Mac 2025 pada 9:36:04 PTG UTC

Artikel ini menerangkan cara mengemas kini nilai dimensi kewangan daripada kod X++ dalam Dynamics 365, termasuk contoh kod.


Halaman ini telah diterjemahkan mesin daripada bahasa Inggeris untuk menjadikannya boleh diakses oleh seramai mungkin orang. Malangnya, terjemahan mesin belum lagi merupakan teknologi yang sempurna, jadi ralat boleh berlaku. Jika anda mahu, anda boleh melihat versi bahasa Inggeris asal di sini:

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

Maklumat dalam pos ini adalah berdasarkan Dynamics 365. Ia juga sepatutnya berfungsi dalam Dynamics AX 2012, tetapi saya belum mengujinya secara eksplisit.

Saya baru-baru ini diberikan tugas untuk mengemas kini nilai dimensi kewangan tunggal berdasarkan logik bentuk tertentu.

Seperti yang anda mungkin tahu, sejak Dynamics AX 2012 dimensi kewangan disimpan dalam jadual yang berasingan dan dirujuk melalui RecId, biasanya dalam medan DefaultDimension.

Keseluruhan rangka kerja untuk mengendalikan dimensi agak kompleks dan saya sering mendapati diri saya perlu membaca semula dokumentasi mengenainya, mungkin kerana ia bukan sesuatu yang sering saya kerjakan.

Bagaimanapun, mengemas kini medan dalam set dimensi yang sedia ada adalah sesuatu yang sering berlaku, jadi saya fikir saya akan menulis mengenai resipi kegemaran saya ;-)


Kaedah utiliti statik mungkin kelihatan seperti ini:

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;
}

Kaedah ini mengembalikan RecId DimensionDefault yang baru (atau sama), jadi jika mengemas kini nilai dimensi untuk rekod - yang mungkin adalah senario yang paling biasa - anda harus pastikan untuk mengemas kini medan dimensi pada rekod tersebut dengan nilai baru.

Kongsi di BlueskyKongsi di FacebookKongsi di LinkedInKongsi di TumblrKongsi di XKongsi di LinkedInSematkan pada Pinterest

Mikkel Christensen

Mengenai Pengarang

Mikkel Christensen
Mikkel ialah pencipta dan pemilik miklix.com. Beliau mempunyai lebih 20 tahun pengalaman sebagai pengaturcara komputer/pembangun perisian profesional dan kini bekerja sepenuh masa untuk sebuah syarikat IT Eropah yang besar. Apabila tidak menulis blog, dia menghabiskan masa lapangnya dengan pelbagai minat, hobi dan aktiviti, yang mungkin sedikit sebanyak dapat dilihat dalam pelbagai topik yang diliputi di laman web ini.