Miklix

Memperbarui Nilai Dimensi Keuangan dari Kode X++ di Dynamics 365

Diterbitkan: 16 Februari 2025 pukul 12.01.08 UTC

Artikel ini menjelaskan cara memperbarui nilai dimensi keuangan dari kode X++ di Dynamics 365, termasuk contoh kode.


Halaman ini diterjemahkan oleh mesin dari bahasa Inggris agar dapat diakses oleh sebanyak mungkin orang. Sayangnya, terjemahan mesin belum merupakan teknologi yang sempurna, sehingga kesalahan dapat terjadi. Jika Anda mau, Anda dapat melihat versi bahasa Inggris aslinya di sini:

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

Informasi dalam postingan ini berdasarkan Dynamics 365. Seharusnya juga berfungsi di Dynamics AX 2012, tetapi saya belum mengujinya secara eksplisit.

Saya baru-baru ini ditugaskan untuk memperbarui nilai satu dimensi keuangan berdasarkan beberapa logika bentuk.

Seperti yang mungkin Anda ketahui, karena dimensi keuangan Dynamics AX 2012 disimpan dalam tabel terpisah dan direferensikan melalui RecId, biasanya di bidang DefaultDimension.

Seluruh kerangka kerja untuk menangani dimensi agak rumit dan saya sering kali harus membaca ulang dokumentasinya, mungkin karena itu bukan sesuatu yang sering saya kerjakan.

Bagaimanapun, memperbarui bidang dalam set dimensi yang ada adalah sesuatu yang sering muncul, jadi saya pikir saya akan menulis resep favorit saya ;-)


Metode utilitas statis bisa terlihat 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;
}

Metode ini mengembalikan DimensionDefault RecId yang baru (atau yang sama), jadi jika memperbarui nilai dimensi untuk suatu rekaman - yang mungkin merupakan skenario paling umum - Anda harus memastikan untuk memperbarui bidang dimensi pada rekaman tersebut dengan nilai baru.

Bagikan di BlueskyBagikan di FacebookBagikan di LinkedInBagikan di TumblrBagikan di XBagikan di LinkedInPin di Pinterest

Mikkel Bang Christensen

Tentang Penulis

Mikkel Bang Christensen
Mikkel adalah pencipta dan pemilik miklix.com. Dia memiliki lebih dari 20 tahun pengalaman sebagai pemrogram komputer profesional/pengembang perangkat lunak dan saat ini bekerja penuh waktu di sebuah perusahaan IT besar di Eropa. Ketika tidak menulis blog, ia menghabiskan waktu luangnya untuk beragam minat, hobi, dan kegiatan, yang mungkin sampai batas tertentu tercermin dalam berbagai topik yang dibahas di situs web ini.