Archive for the ‘ AX 2012 ’ Category

Microsoft Dynamics® AX 2012 Development Introduction sertifikası

Merhaba

AX 2012 için ilk sertifikamı aldım. “MB6-869 Microsoft Dynamics® AX 2012 Development Introduction”.

Dev I ve Dev II yi kapsayan bu sınavda 74 soru mevcut. 3 saate yakın süreniz var. Süre fazlasıyla yetiyor. Bir çok soru eski versiyondan bildiğimiz konulardan çıkıyor. AX 2012 ile gelen yeniliklerden de soru mevcut tabiki .Özelikle ListPage ve güvenlikle ilgili kısımlara çalışmak lazım. Dev I ve Dev II dokümanını iyice okuyup örnekler yapılırsa bu sınav kolaylıkla  geçilebilir.

Bu sertifikayı almak isteyen olursa yardımcı olabilirim.

Selamlar.

AX 2012 QueryHavingFilter özelliği (Having)

Merhaba

“QueryHavingFilter” bizim SQL de kullandığımız “Having” ifadesinin axtaki karşılığıdır. AX 2012 ile gelen bu özellik malesef şimdilik sadece “Query” yapısında kullanılabiliyor.

Aşağıdaki SQL ifadesini inceleyelim.

SELECT CURRENCY, COUNT(RECID) FROM CUSTTABLE
	GROUP BY CURRENCY 	HAVING COUNT(RECID) < 3

Bu ifade de istediğimiz sonuç müşteriye bağlı adedi 3 ten az olan para birimlerinin listesi.

Bu ifadenin Ax’taki karşılığı yoktu. Döngüde kontrol yapıp bunu tespit ediyorduk. Bu da performans açısından yanlış bir kullanımdı.

AX 2012 ile gelen QueryHavingFilter bu özelliği axa taşımış oldu.

Bir Query örneğiyle AX 2012 ‘de nasıl kullanabileceğimize bakalım.

Read more

AX 2012 addQueryFilter ile addRange arasındaki fark

Merhaba

addQueryFilter ax 2012 ile gelen bir yenilik.

addQueryFilter ile addRange arasındaki farkı anlamak için öncelikle SQL’de bir kaç örnek yapalım.

Sql’de basit bir join .

SELECT * FROM CUSTTABLE
            OUTER JOIN CUSTTRANS ON CUSTTRANS.CUSTACCOUNT = CUSTTABLE.ACCOUNTNUM

Bu join’e hareketlerin para birimi EUR olanlar diye bir kriter vermek istersen 2 seçeneğimiz var.

SELECT * FROM CUSTTABLE
            OUTER JOIN CUSTTRANS ON CUSTTRANS.CUSTACCOUNT = CUSTTABLE.ACCOUNTNUM
                   AND CUSTTRANS.CURRENCYCODE = 'EUR'

veya

SELECT * FROM CUSTTABLE
            OUTER JOIN CUSTTRANS ON CUSTTRANS.CUSTACCOUNT = CUSTTABLE.ACCOUNTNUM
                WHERE  CUSTTRANS.CURRENCYCODE = 'EUR'

Birinci sql ifadesi öncelikle CustTable da bulunan bütün kayıtları getirir. Hareketlerden de sadece EUR olanları alır.

İkinci ifade ise aslında inner joinin yaptığı işi yapar ve sadece EUR tipinde hareketi olan müşterileri ve hareketlerini getirir.

İşte addQueryFilter ile addRange arasındaki fark bu iki sql ifadesi arasındaki farkla birebir aynıdır.

addQueryFilter where ifadesini , addRange ise and ifadesine karşılık gelir.

Ax ta bir örnekle inceleyelim,

static void Query_addQueryFilter (Args _args)
{
    Query                   query;
    QueryBuildDataSource    qbdsCustTable , qbdsCustTrans;
    QueryBuildRange         range;
    QueryFilter             filter;
    QueryRun                qRun;    

    custTable               CustTable;
    custTrans               custTrans;
    ;

    query = new Query();
    qbdsCustTable = query.addDataSource(tableNum(CustTable));
    qbdsCustTrans = qbdsCustTable.addDataSource(tableNum(CustTrans));
    qbdsCustTrans.joinMode(JoinMode::OuterJoin);
    qbdsCustTrans.relations(true);       

    query.addQueryFilter(qbdsCustTrans,  fieldStr(CustTrans, CurrencyCode)).value(SysQuery::value('EUR'));

   // qbdsCustTrans.addRange(fieldNum(CustTrans, CurrencyCode)).value(SysQuery::value('EUR'));  

    qRun = new QueryRun(query);
    while (qRun.next())
    {
        CustTable = qRun.get(TableNum(CustTable));
        custTrans = qRun.get(TableNum(custTrans));        

        info(strfmt("%1 : %2: %3: %4", CustTable.AccountNum ,
                                                CustTable.name(),
                                                custTrans.AmountMST,
                                                custTrans.CurrencyCode
                                                ));
    }

}

addQueryFilter koddan çok formalarda kullanılmak üzere geliştirilmiş bir özellik. Formlardaki veri süzme işleminde artık varsayılan olarak addQueryFilter kullanılıyor.

Selamlar.

AX 2012′de muhasebe günlüğü oluşturmak

Merhaba

Ax 2012′de muhasebe günlüğü oluşturmak için iki tane sınıf var. AxLedgerJournalTable ve AxLedgerJournalTrans.

Bu sınıflar kullanılarak kolayca günlük oluşturulabilir.

Örneğin:

static void createLedgerJournal(Args _args)
{
AxLedgerJournalTable   ledgerJournalTable = new AxLedgerJournalTable();
AxLedgerJournalTrans   ledgerJournalTrans= new AxLedgerJournalTrans();
container                   ledgerDimensions, offsetDimensions;
;
ledgerJournalTable.parmJournalName("GenJrn");
ledgerJournalTable.save(); // LedgerJournalTable oluştu.

ledgerJournalTrans.parmAccountType(LedgerJournalACType::Ledger);
ledgerJournalTrans.parmJournalNum(ledgerJournalTable.ledgerJournalTable().JournalNum);
ledgerDimensions = ["Şirket Hesabı","110.100.10"];
ledgerJournalTrans.parmLedgerDimension(AxdDimensionUtil::getLedgerAccountId(ledgerDimensions));
ledgerJournalTrans.parmAmountCurDebit(1000);
offsetDimensions = ["Şirket Hesabı","632.100.20"];
ledgerJournalTrans.parmOffsetLedgerDimension(AxdDimensionUtil::getLedgerAccountId(offsetDimensions));
ledgerJournalTrans.save(); // LedgerJournalTrans oluştu
}

Genel muhasebe boyut yapısı Ax 2012′ tamamen değişmiş durumda. Burada ana hesapları da boyutla birlikte veriyoruz.
Aslında ana hesaplarda boyut gibi çalışıyor denebilir.
Başka bir makalede boyutlarla ilgili bazı konuları da anlatacağım.
Selamlar.

AX 2012 ‘de lookup’ta çoklu kayıt seçimi nasıl yapılır

Merhaba

Ax 2012 ‘yi  incelerken  SysLookupMultiSelectCtrl isminde bir sınıfla karşılaştım . Bu sınıf sayesinde lookuplarda  çoklu kayıt seçilebiliyor.

Öncelikle lookupta görmek istediğiniz veri için bir query hazırlamalısınız. AOT de ki query düğümünü kullanarak yapabileceğiniz gibi kodla da oluşturabilirsiniz.

Biz CustTable için bir query hazırlayalım. Ayrıca tasarımında sadece stringEdit (adı CustAccount olsun ) bir alan olan form yapalım.

Bu aşamadan sonra forma kod yazmamız gerekiyor. Eklememiz gereken kodlar :

Read more

Dynamics AX 2012

Merhaba

Ax 2012 ile tanıştım. Yakın zamanda geliştirmelere başlamam gerekiyor. Bu yüzden yenilikleri öğrenmeye çalışıyorum.

Ax 2012 deki karşılaştığım yenilikleri fırsat buldukça paylaşacağım.

Bir kaçı şöyle:

Ax 2012 de geliştirme ortamı farklı bir ortam. CTR-Shift-W kısa yoluyla ulaşılan farklı bir ortamda geliştirmeleri yapacağız. Ax 2009 daki geliştirme modunun yeni bir pencerede açılmış haline benziyor. Tabi bir çok yenilik var.

Model yapısı gelmiş  güzel bir yapı. Versiyon kontrölu gibi çalışıyor. Biraz daha farklı.

EDT yapısında ufak değişiklikler var . İlişki tanımlama değişmiş. Bütün ilişkiler tablo üzerinden görünebilecek.

Full Text Index gelmiş.

Raporlar SSRS olmuş normal rapor düğümü var  ancak içinde hiç rapor yok. Bütün raporlar SSRS e taşınmış.

Güvenlik yapısı tamamen değişmiş.

Şimdilik gördüklerim bunlar. İlerleyen zamanlarda bu konuların ayrıntılarını da sizinle paylaşacağım.

Selamlar.

Page 7 of 7« First...34567