31 Ekim 2016 Pazartesi

Dynamic Ax'ta excelle update yapma

Excelle istediğimiz bir alanı updete yapabiliriz. Bunun için aşağıdaki kodu inceleyebilirsiniz.
static void ExcelUpdate_MAA(Args _args)
   {

    FilenameOpen        filePath;
    SysExcelApplication application;
    SysExcelWorkBooks   workBooks;
    SysExcelWorkBook    workBook;
    SysExcelWorkSheets  workSheets;
    SysExcelWorkSheet   workSheet;
    SysExcelCells       cells;

    Int                     NoofSheet,i,sn;
    LedgerJournalACType     LedgerJournalACType;
    CustTrans      custtrans;

    ;
    #Excel

    filePath            = "C:\\Desktop\\maakbulut\\ax_excel\\FiyatFarkıFaturaRaporu.xlsx"; // kendi oluşturduğumuz excelin adresini veriyoruz.
    application         = SysExcelApplication::construct();
    application.visible(false);
    workBooks           = application.workbooks();
    workBooks.open(filePath,0,true);
    workSheets          = workBooks.item(1).worksheets();
    noOfSheet           = worksheets.count();

    try
    {
        ttsbegin;

        for( i = 1; i <= 1 ; i++) // noOfSheet
        {
            workSheet       = workSheets.itemFromNum(i);
            if(workSheet)
            {
                for(sn = 2;sn <= 337;sn++) // 2. satırdan başlayıp 337. satıra kadar olan verileri alacak
                {
                    custtrans.clear();

                    cells = workSheet.cells();

                    select forupdate custtrans where custtrans.Voucher == cells.item(sn,1).value().bStr();
                    if (custtrans)
                    {
                         custtrans.Dimension[5]      = "Hediye"; // Şartımız Dimension[5] alanı Hediye olanlar
                         custtrans.doUpdate();
                    }
                }
            }
        }
        ttscommit;
        info("İşlem tamamlandı.");
    }
    catch
    {
        ttsabort;
        info("Hata oluştu.");
    }
    application.quit();
} 

12 Ekim 2016 Çarşamba

Dynamic Ax'ta Formu Yüklenirken Enum'da sizin belirleyeceğiniz seçeneğe göre gelmesi

Sizden form yüklenirken enum'daki istenilen bir alana göre açılması istenirse;


Örneğin bu formda bizden form açılırken Hareket Tipi "Alım" olanlar gelsin diye talep edildi.

Bunun için;

Önce formun ClassDeclaration bölümüne tanımlama yapıyoruz.
public class FormRun extends ObjectRun
{
     QueryBuildRange             qbrStatus;
}

Daha sonra yine formun init'ine şu kodu yazıyoruz.

 qbrStatus.value(SysQuery::value(ETGCollateralPostingType::Receive));

  //  "ETGCollateralPostingType" bu alan Hareket Tipi enum'unun adı.
Şimdi form açılırken Hareket tipi "Alım" olanlar gelecek.


Aşağıdaki kod da form ile enum'daki Hareket Tipi alanını "Alım" olarak ayarlar.
Yapılmazsa Enum'ın ilk sırasındaki seçenek gelir.

filterStatus.selection(ETGCollateralPostingType::Receive);

Dynamic Ax'ta form açıldığında ilk kaydın gelmesi

Sizden form açıldığında ilk kaydın gelmesi istenirse yapacağınız iş çok basit.





Formun data sources kısmından ilgili data source'u sağ tıklayıp özellilker - StartPosition alanını
First yaparsak ilk kayıttan başlayacaktır.



Last yaparsak da son kayıt seçili gelecek.

Total ciro

static void MAA_SalesTableTotal(Args _args) { SalesTable SalesTable; utcDateTime dateTime; dateTime ...