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

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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1731333949687/364ba59a-d43b-42b0-a3f6-dd66ba8e5f08.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1731337931944/2fa7c184-fe76-4beb-adfc-c6f771df46f4.png align="center")

* * *

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.

```csharp
internal final class PurchTableFormEventHandler
{
    /// <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.

```csharp
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);    
}
```

```csharp
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);
}
```

```csharp
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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1731339538673/a7540479-c525-4a5c-ab66-6db11c1ba4b5.png align="center")
