9 Ağustos 2017 Çarşamba

AX 2012 - Query'ye tek bir finansal boyut için filtre eklemek

Bunu tabloları ekleyerek yapmaya kalktığınızda bir çok tabloyu birbirine bağlamak zorunda olduğunuzu göreceksiniz. Bunu sizin yerinize yapan DimensionProvider adlı bir sınıf eklenmiş AX 2012'ye:

DimensionProvider           dimProvider = new DimensionProvider();


        dimProvider.addAttributeRangeToQuery(element.query(),element.query().dataSourceNo(1).name(),
       FieldStr(MyTable,DefaultDimension),
        DimensionComponent::DimensionAttribute,
        OMOperatingUnit::find(depRecId,OMOperatingUnitType::OMDepartment).OMOperatingUnitNumber,
            "Departmanı",true);

Bu arada Unknown type: RefRecId gibi bir hata alırsanız sebebi kullandığınız tablodaki EDT'nin yanlış olması olabilir. Benim başıma gelen durumda sorun yerel bir çözümde DefaultDimension field'ına DimensionDefault yerine RefRecId EDT kullanılmasıydı. Sizinkinde RefRecId yerine başka birşey de olabilir. AX orijinal tablosu HcmEmployment tablosunda da böyle bir bug varmış.

8 Ağustos 2017 Salı

AX 2012 - Dönem kapanış kontrolü

Muhasebe için:

FiscalCalendars::checkModuleIsOpen(SysModule::Ledger, myTable.TransDate,FiscalCalendars::findPeriodByPeriodCodeDate(Ledger::fiscalCalendar(CompanyInfo::find().RecId),myTable.ETGTransDate),false)

veya

select firstOnly period
        where transDate >= period.StartDate  && transDate <= period.EndDate
            exists join ledgerPeriod
                where ledgerPeriod.FiscalCalendarPeriod == period.RecId &&
                      ledgerPeriod.Status != FiscalPeriodStatus::Open;
    if (period.RecId != 0)
        throw error("Yeni tarih için ilgili mali dönem kapalı!..");

Satış için:

FiscalCalendars::checkModuleIsOpen(SysModule::Sales, CustInvoiceJour.InvoiceDate,FiscalCalendars::findPeriodByPeriodCodeDate(Ledger::fiscalCalendar(CompanyInfo::find().RecId),CustInvoiceJour.InvoiceDate),false)

Stok kapanışı için:

InventClosing::findClosingDate(endmth(InventJournalTrans.TransDate))

2 Ağustos 2017 Çarşamba

AX 2012 - Security Development Tool Kaynaklı Derleme Hatası

Security Development Tool yetkilendirme işlemlerini oldukça kolaylaştıran harika bir araç. Ancak bizim başımıza gelen can sıkıcı bir soruna yol açabiliyor. Aşağıdaki hatayı alırsanız bilin ki sebebi bu tool:

Error executing code: SysSecurityRecorder_**** object does not have method 'MenuItemInvoked'.

Konuyla ilgili bulabildiğim tek kaynak Google translate ile fransızcadan ingilizceye çevirerek anlayabildiğim bir blog'du (Şahsen Google Translate'yi türkçe çeviriler için çok başarısız buluyorum). Buradaki iki yöntem de işime yaradı:

1. yöntem: Client bilgisayardaki AOD dosyalarını silmek.

2.yöntem: AX DB'de bu kodu çalıştırınca tek tek tüm clientlarda temizlik yapmaya gerek kalmıyor:

UPDATE SYSSQMSETTINGS SET GLOBALGUID = '{00000000-0000-0000-0000-000000000000}'