Posts Tagged ‘ DefaultAccount

Dynamics 365 Finance and Operations DefaultAccount ve Segmented Entry nasıl eklenir?

Bu yazıda Dynamics 365 Finance and Operations içinde bir tabloya DefaultAccount nasıl eklenir ve bu alanı formda Segmented entry control ile nasıl kullanıcıya kullandırabiliriz anlatmaya çalışacağım.

DefaultAccount aslında DimensionAttributeValueCombination kaydıdır. MainAccount tablosunu referans alır ama asıl yeri orası değildir. Birçok boyut ve hesap ilişkisinde kullanılır.

Öncelikle Tabloya LedgerDimensionDefaultAccount EDT sini kullanarak bir alan ekleyelim. Eğer sürükle bırak ile eklerseniz otomatik ilişkiyi oluşturacak. Yoksa elle eklemeniz gerekir.

Resim-1

Sonrasında forma gelip eklediğimiz alanı tasarımda istediğimiz bir yere sürükleyip bırakıyoruz. Segmented Entry oluşuyor. Özelliklerinde resimde görünen tanımları yapmalıyız. Özellikle Controller Class çok önemli.

Resim-2

Derleyip çalıştırdığımızda formda alanımızı göreceğiz.

Resim-3

Bu yazıda DefaultAccount ve Segmented Entry den bahsettim. Bu alanın kodda nasıl kullanıldığıyla ilgili Ax2012’ de çok yazım olmuştu. D365 içinde örekler yapacağım.

Selamlar.

www.fatihdemirci.net

TAGs: Microsoft Life Cycle Services, LCS, Azure, Azure DevOps, DefaultAccount, Microsoft Dynamics 365, MsDyn365FO, MsDyn365CE, MsDyn365, Segmented Entry, Power Automate, Power Apss, Power Virtual Agents, Dynamics 365 nedir, Dynamics 365 ERP, Dynamics 365 CRM

Dynamics AX 2012 Default Account

Merhaba

DefaultAccount DimensionAttributeValueCombination tablosunda LedgerDimensionType ‘ı  DefaultAccount olan kayıtlardır. MainAccount ile aslında çok bir farkı yok. Ancak benim anladığım bazı işlerde kolaylık olması açısından DefaultAccount kullanılıyor. AX 2009 ‘da LedgerAccount seçilen tanım formlarında ax 2012 ‘de MainAccount değilde DefaultAccount seçiliyor.

DefaultAccount için Segmented Entry Control kullanılıyor. Ancak sadece birinci kısmı yani MainAccount aktif. Boyut yapısı görünmüyor. Biz yeni bir tablo ve form oluşturup bu kontrolün nasıl eklenebileceğini bakalım. Adım adım ilerleyelim.

  1. Öncelikle bir tablo yapalım ve EDT ‘si LedgerDimensionDefaultAccount olan  DefaultAccount isminde bir alan açalım. Bu işlemde EDT’yi tabloya sürüklediğinizde DimensionAttributeValueCombination tablosuyla ilişki kurmak için soru soracaktır. Bu ilişkinin kurulması şart. Eğer EDT ile ilgili bir sıkıntı çıkarsa elle de ekleyebilirsiniz.
  2. Bir form yapalım ve veri kaynağına oluşturduğumuz tabloyu ekleyelim.
  3. Tasarım kısmına bir Grid ekleyelim ve veri kaynağından DefaultAccount alanını sürükleyip Grid’e bırakalım. Otomatik olarak Segmented Entry Control oluşturulacaktır.
  4. Kontrolün çalışabilmesi için biraz kod yazmamız gerekiyor. Formun ClassDecleration ve init metodlarına aşağıdaki kodları ekleyelim.
  5. public class FormRun extends ObjectRun
    {
       LedgerDimensionDefaultAccountController defaultAccountController;;
    }
    
    public void init()
    {
        super();
        // hangi veri kaynağının hangi alanı için çalışacağını belirtiyoruz
        defaultAccountController =  LedgerDimensionDefaultAccountController::construct(
                       FDSegmentSEmple_DS, fieldstr(FDSegmentSEmple, DefaultAccount));
    }
    
  6. Veri kaynağındaki LedgerDimension alanına şu kodları ekleyelim
  7. public Common resolveReference(FormReferenceControl _formReferenceControl)
    {
        return defaultAccountController.resolveReference();
    }
    
  8. Grid altında oluşan Segmented Entry Control’e de şu kodları ekleyelim.
  9. public void jumpRef()
    {
        defaultAccountController.jumpRef();
    }
    
    public void loadAutoCompleteData(LoadAutoCompleteDataEventArgs _e)
    {
        super(_e);
        defaultAccountController.loadAutoCompleteData(_e);
    }
    
    public void loadSegments()
    {
        super();
        defaultAccountController.parmControl(this);
        defaultAccountController.loadSegments();
    }
    
    public void segmentValueChanged(SegmentValueChangedEventArgs _e)
    {
        super(_e);
        defaultAccountController.segmentValueChanged(_e);
    }
    
    public boolean validate()
    {
        boolean isValid;
        isValid = super();
        isValid = defaultAccountController.validate() && isValid;
        return isValid;
    }
    
  10. Şu anda kontrol hazır formu açtığınızda aşağıdaki gibi bir görüntü göreceksiniz.

Selamlar.

Türkiye'nin en doğru, dolu dolu ve hatasız anlatımları ile teknik yazılarına, makalelerine, video'larına, seminerlerine, forum sayfasına ve sektörün önde gelenlerine ulaşabileceğiniz teknik topluluğu, MSHOWTO