Dynamics AX 2012 Segmented Entry Control

Merhaba

Segmented Entry Control ax 2012 ile değişen finansal boyut yapısında hesap ve boyutları birlikte girebilme imkanı sağlayan bir yapıdır. Genel muhasebe günlüklerinde girişler bu şekilde yapılıyor. Bu yazımda yeni bir tablo ve form oluşturup bu kontrolün nasıl eklenebileceğini anlatacağım. Adım adım ilerleyelim.

  1. Öncelikle bir tablo yapalım ve EDT ‘si LedgerDimensionAccount olan  LedgerDimension 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 LedgerDimension 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
    {
        LedgerDimensionAccountController ledgerDimensionAccountController;
    }
    
    public void init()
    {
        super();
        // hangi veri kaynağının hangi alanı için çalışacağını belirtiyoruz
        ledgerDimensionAccountController =  LedgerDimensionAccountController::construct(
                                            FDSegmentSEmple_ds,
                                            fieldStr(FDSegmentSEmple,LedgerDimension));
    }
    
  6. Veri kaynağındaki LedgerDimension alanına şu kodları ekleyelim
  7. public boolean validate()
    {
        boolean ret;
        ret = super();
        ret = ledgerDimensionAccountController.validate() && ret;
        return ret;
    }
    
    public void jumpRef()
    {
        super();
        ledgerDimensionAccountController.jumpRef();
    }
    
    public Common resolveReference(FormReferenceControl _formReferenceControl)
    {
        return ledgerDimensionAccountController.resolveReference();
    }
    
  8. Grid altında oluşan Segmented Entry Control’e de şu kodları ekleyelim.
  9. public void loadAutoCompleteData(LoadAutoCompleteDataEventArgs _e)
    {
        super(_e);
        ledgerDimensionAccountController.loadAutoCompleteData(_e);
    }
    
    public void loadSegments()
    {
        super();
        ledgerDimensionAccountController.parmControl(this);
        ledgerDimensionAccountController.loadSegments();
    }
    
    public void segmentValueChanged(SegmentValueChangedEventArgs _e)
    {
        super(_e);
        ledgerDimensionAccountController.segmentValueChanged(_e);
    }
    
  10. Şu anda kontrol hazır formu açtığınızda aşağıdaki gibi bir görüntü göreceksiniz.

Üsteki oka tıkladığınızda ana hesap ve boyut yapısını görebilirsiniz.

Ana hesabı ve boyutları bir arada girebileceğiniz bir yapı oluştu. Burada girdiğiniz verilerden DimensionAttributeValueCombination tablosunda bir kayıt oluşturulur ve o kaydın RecId si oluşturduğumuz tablodaki LedgerDimension alanına yazılır. Tablodan baktığınızda sadece RecId görürsünüz ancak formdan baktığınızda bu kontrol sayesinde bütün veriyi görebilirsiniz. Bütün bu işlemleri LedgerDimensionAccountConroller sınıfı sizin için yapar.

Eski alışkanlıklara biraz ters ancak yeni boyut yapısında veri girişini kolaylaştırması açısında bence kullanışlı bir yapı olmuş.

Selamlar.

 
  1. Selamlar Fatih hocam.
    Hakikaten bu özelliği gördüğümde çok beğendim.
    Giriş açısından çok kolay ama yazılım yükü de epeyce varmış.
    Sayende öğrenmiş olduk.
    Teşekkürler.

  2. Merhaba .Sitenizi inceliyorum ax’a yeni başladım lakin bazı örneklerinizii yapamıyorum.LedgerDimensionAccount olan EDT yi sürükle bırak demissiniz lakin ole bir edt yok adım adım işlemlerinizi yazabilirmisiniz yeni baslayanlar için zor oluyor gercekten.Paylasımlarınız için tesekkürler.

    • Merhaba

      Yazılarımı mümkün olduğunca açık ve net yazmaya çalışıyorum. Anlaşılmayan kısımlar için her zamana geri dönüş yapabilirsiniz.
      Bu yazım da Ax 2012 ile alakalı bir yapıdan bahsediyorum ve ax 2012′de LedgerDimensionAccount adında bir EDT mevcut. Siz Ax’ın hangi versiyonunda çalışıyorsunuz? Ona göre yardımcı olayım.

      Selamlar.

  1. No trackbacks yet.