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.
- Ö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.
- Bir form yapalım ve veri kaynağına oluşturduğumuz tabloyu ekleyelim.
- 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.
- Kontrolün çalışabilmesi için biraz kod yazmamız gerekiyor. Formun ClassDecleration ve init metodlarına aşağıdaki kodları ekleyelim.
- Veri kaynağındaki LedgerDimension alanına şu kodları ekleyelim
- Grid altında oluşan Segmented Entry Control’e de şu kodları ekleyelim.
- Şu anda kontrol hazır formu açtığınızda aşağıdaki gibi bir görüntü göreceksiniz.
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)); }
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(); }
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); }
Ü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.