How to Add a New Financial Dimension Lookup Field in Dynamics 365 Finance & Operations

Yeni bir finansal boyut alanı eklemek

Bu yazıda, Dynamics 365'te standart boyut alanlarına bağlı kalmadan yeni bir boyut alanı eklemeyi ve bu alanın standart boyutlarla nasıl senkronize çalışabileceğini anlatacağım.

PurchLine’a EDT’si DimensionValue olan string bir alan açıyoruz. İlgili alan için her hangi bir relation oluşturmanıza gerek yok.

Açtığımız alanı PurchTable formuna ekliyoruz.


Açtığımız alan için, DimensionValueLookupHelper::lookupDimensionValues() yöntemi ile standart Dimension alanları gibi bir Form Lookup çıkmasını sağlayabilirsiniz. Ancak, bu işlemi yaparken ilgili boyutun DimensionAttribute kaydını bulup sağlamanız gerektiğini unutmayın.

/// <summary>
/// 
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormControlEventHandler(formControlStr(PurchTable, PurchLine_ETGDimDepartment), FormControlEventType::Lookup)]
public static void PurchLine_ETGDimDepartment_OnLookup(FormControl sender, FormControlEventArgs e)
{
    DimensionValueLookupHelper::lookupDimensionValues(DimensionAttribute::findByName('Department')), sender);
}

Bu eklediğimiz alanın standart boyutlarla uyumlu çalışması için insert, update ve modified methodlarına eklemeler yapmanız gerekiyor.

public void insert(
    boolean     dropInvent,                     
    boolean     findMarkup,                     
    boolean     updatePurchTableDistributions,  
    boolean     _skipPurchTableUpdate,           
    boolean     _skipInterCompanyCalcDisc)
{  
    //Yeni açtığımız boyut alanına ilgili Boyut değeri atanır 
    this.ETGDimDepartment = ETGBaseDimensionParameters::getDimensionValue(ETGBaseDimensionType::Department, this.DefaultDimension);

    next insert(dropInvent,findMarkup,updatePurchTableDistributions,_skipPurchTableUpdate,_skipInterCompanyCalcDisc);    
}
public void update(boolean  dropInvent,
                   boolean  updateOrderLineOfDeliverySchedule,
                   boolean  updatePurchTableDropShipStatus)
{
    //Yeni açtığımız boyut alanına ilgili Boyut değeri atanır
    this.ETGDimDepartment = ETGBaseDimensionParameters::getDimensionValue(ETGBaseDimensionType::Department, this.DefaultDimension);

    next update(dropInvent,updateOrderLineOfDeliverySchedule,updatePurchTableDropShipStatus);
}
void modifiedField(FieldId _fieldId, boolean _userInput)
{
    next modifiedField(_fieldId, _userInput);

    switch (_fieldId)
    {
        case fieldNum(PurchLine, ETGDimDepartment):
            //Standart boyutlara yeni açtığımız boyut alanının değeri atanır
            this.DefaultDimension = ETGBaseDimensionParameters::setDimensionValue(ETGBaseDimensionType::Department, this.ETGDimDepartment, this.DefaultDimension);
            break;
    }
}

Sonuç olarak eklediğimiz alan standart boyutlar gibi bir Form Lookup ile çalışacaktır.