8 Eylül 2014 Pazartesi

AX 2012 - Taxtrans tablosunun değişen yapısı

AX 2012 ile birlikte eskiden taxtrans tablosunda olan bazı alanlar değişik tablolara dağıldı. Microsoft'un bu konuda açıklayıcı bir makalesi var. Aşağıda örnek bir join var:


    select generalJournalAccountEntry
            join generalJournalEntry
        where generalJournalEntry.RecId == generalJournalAccountEntry.GeneralJournalEntry &&
              generalJournalEntry.RecId == _RecId
            join subledgerVoucherGeneralJournalEntry
        where subledgerVoucherGeneralJournalEntry.GeneralJournalEntry == generalJournalEntry.RecId
            join dimensionAttributeValueCombination
        where dimensionAttributeValueCombination.RecId == generalJournalAccountEntry.LedgerDimension
            join mainAccount
        where mainAccount.RecId == dimensionAttributeValueCombination.MainAccount;
 




AX 2012 - LedgerTrans nereye gitti?

AX 2012 ile LedgerTrans tablosunun yerine birkaç tablo geliyor. Bu tabloları join ile birleştirmek gerekiyor. Bu konu hakkında Microsoft'un açıklayıcı bir makalesi var. İsimleri değişen ve değişik tablolara dağılan alanların açıklamalarını buradan bulabilirsiniz. Aşağıda örnek bir join var:


select generalJournalAccountEntry
            join generalJournalEntry
        where generalJournalEntry.RecId == generalJournalAccountEntry.GeneralJournalEntry &&
              generalJournalEntry.AccountingDate  >=  beginDate && generalJournalEntry.AccountingDate <= endDate
            join subledgerVoucherGeneralJournalEntry
        where subledgerVoucherGeneralJournalEntry.GeneralJournalEntry == generalJournalEntry.RecId
            join dimensionAttributeValueCombination
        where dimensionAttributeValueCombination.RecId == generalJournalAccountEntry.LedgerDimension
        join mainAccount
        where mainAccount.RecId == dimensionAttributeValueCombination.MainAccount &&
              mainAccount.MainAccountId == myAccount

3 Eylül 2014 Çarşamba

AX 2012 - LedgerJournalTrans tablosuna Voucher atamak

AXLedgerJournalTrans sınıfı kullanıldığında voucher otomatik atanır. Ancak direk tablodan kayıt eklendiğinde bunu kendiniz yapmalısınız:

numberSeq   = numberSeq::newGetVoucherFromCode(NumberSequenceTable::find(ledgerJournalTable.ledgerJournalName().NumberSequenceTable).NumberSequence);
 LedgerJournalTrans.Voucher     = numberSeq.voucher();

2 Eylül 2014 Salı

AX 2012 - Forma splitter eklemek

AX 2012'de splitter eklemek 2009'a göre çok daha kolay. Burada dikey splitter'i anlatacağım:

Formun üst parçası için bir grup oluşturun. Splitter için bir grup oluşturun. Ben Hsplitter adını verdim. AutoDeclaration = Yes olsun ve Style = SplitterHorizontalContainer olsun. Alt taraf için de bir grup oluşturun. Üst gruba bir isim verin. Burada ben TopGroup adını verdim, ayrıca bu grup için de AutoDeclaration = Yes olsun. Alt grup için Height Column Height olsun. Splitter grubu bu iki grubun arasında olsun.

Form classDeclaration'a bu satırı ekleyin:

SysFormSplitter_Y                       HorizontalSplitter;

Eğer yatay olacaksa SysFormSplitter_X olmalı. Form init metoduna da bu satırı ekleyin:

HorizontalSplitter = new SysFormSplitter_Y(HSplitter,TopGroup, element);

Yatay olacaksa new SysFormSplitter_X ... olmalı.

Hepsi bu...


8 Ağustos 2014 Cuma

AX 2012 - CIL oluşturma esnasında XPPIL hatası

Açıklama: CIL generation: The given key was not present in the dictionary.

Yol: \XppIL

Satır: 1

Yöntem/Özellik adı: XppIL

Teşhis kodu: Err:351

Data Dictionary'i senkronize edin, hataları temizleyin.

AOS down yapın. Bu klasördeki alt klasörler hariç tüm dosyaları silin:
C:\Program Files\Microsoft Dynamics AX\60\Server\AX2012R2_Dev\bin\XppIL

5 Ağustos 2014 Salı

AX 2012 - Forma default dimension eklemek

Nasıl yapıldığını anlamak için LedgerJournalTable formuna bakılabilir.
DimensionDefault EDTsi ile tabloya eklediğimiz alana DimensionAttributeValueSet tablosunun RecId alanıyla bir relation ekliyoruz.

Forma bir tab sayfası ekleyip adını tabFinancialDimensions yapıyoruz ve aşağıdaki property ayarlarını yapıyoruz:

AutoDeclaration = true
caption = @SYS101181
HideIfEmpty = No
NeedPermission = Manual

Formun classDeclaration metoduna aşağıdaki tanımlamayı yapıyoruz:

DimensionDefaultingController       dimensionDefaultingController;

Formun init metoduna aşağıdaki kodları yazıyoruz:

public void init()
{

   boolean allowEdit = true;
    super();
    dimensionDefaultingController = DimensionDefaultingController::constructInTabWithValues(false, true, allowEdit, 0, this, tabFinancialDimensions, "@SYS101181");
    dimensionDefaultingController.parmAttributeValueSetDataSource(MyTable_ds, fieldStr(MyTable, DefaultDimension));
    dimensionDefaultingController.parmValidateBlockedForManualEntry(true);
}


Tab sayfası kontrolüne bu metodu ekliyoruz:

public void pageActivated()
{
    dimensionDefaultingController.pageActivated();
    super();
}


Tablo data source metodlarını aşağıdaki gibi güncelliyoruz:

public void delete()
{
    super();
    DimensionDefaultingController.deleted();
}

public void write()
{
    ttsBegin;
    DimensionDefaultingController.writing();
    super();
    ttsCommit;
}

public int active()
{
    int ret;

    ret = super();
    DimensionDefaultingController.activated();
    return ret;
}


4 Ağustos 2014 Pazartesi

AX 2012 - SSRS ile sıfır yerine boşluk göstermek

Field yerine (örnekte PurchPrice) aşağıdaki gibi bir IIF fonksiyonu kullanabilirsiniz:

=IIF(Fields!PurchPrice.Value = 0 ,"",Fields!PurchPrice.Value)