Dynamics Ax – X++ Beyaz sayfa raporunu kod ile PDF olarak kaydetmek

27 Kas

Merhaba,
Bugün sizlere, beyaz sayfa raporunu pdf olarak bir dizine nasıl kaydedeceğiz anlatmaya çalışacağım.
Bunu anlatırken, aslında beyaz sayfa raprounun kod ile tetiklenmesi olayınıda anlatmış oluyorum.

Öncelikle eğer Args() methodu hakkında bilginiz yoksa araştırmanızı önenerim, çünkü burada raporu args methodu ile tetikleyeceğiz.

Şimdi kodlarımıza geçelim. Commentlerde açıklamaları belirtiyorum.

static void SMH_ReportOutputPDF(Args _args)
{
    //Değişkenlerimizi tanımlıyoruz ben VendPurchOrderJour tablosu üzerinden çalışan bir rapor örneği veriyorum.
    ReportRun               reportRun;
    Args                    args;
    VendPurchOrderJour      purchOrderJour;
    ;

    //PurchId'si XX-XX000001 olan kayıdı alıyoruz.
    select firstOnly purchOrderJour
    where purchOrderJour.PurchId == "XX-XX000001";

    //Yeni bir args clası türetiyoruz.
    args = new args();
    //Açmak istediğimiz, raporumuzun adını belirtiyoruz.
    args.name(reportStr(ReportName));
    //Bufferımızı yukarıda dolduruğumuz purchOrderJour olarak belirtiyoruz.
    args.record(purchOrderJour);
    //Rapor hangi menuItem üzerinden tetikleniyorsa o menuItem'ın adını belirtiyoruz.
    args.menuItemName(menuitemOutputStr(MenuItemName));
    
    //Yeni bir ReportRun clası türetiyoruz ve args'ımızı veriyoruz.
    reportRun = new reportRun(args);
    //Raporun init methoduna gidiyoruz.
    reportRun.init();
    
    //Eğer promp ederseniz, rapor açıldığında ekrana bir query, dialog vs geliyorsa bunun çıkmasını sağlarsınız,
    //Amacımız raporu kullanıcı görmeden,belirlediğimiz dizine pdf olarak kaydetmek olduğu için kullanmıyoruz.
    //if (reportrun.prompt())
    //{
        //Eğer dizinde daha önce böyle bir dosya varsa, bu dosyayı siliyoruz ki kullanıcıya dosya zaten var üzerine //yazalım mı sorusunun sormasını engelliyoruz.
        WinAPI::deleteFile("C:\\Temp\\Test.pdf");

        //Yazdırma seçenekleri methodumuz printJobSettings ile Dosya olacağını belirtiyoruz.
        reportRun.printJobSettings().setTarget(PrintMedium::File);
        //Formatımızın PDF olacağını belirtiyoruz.
        reportRun.printJobSettings().format(PrintFormat::PDF);
        //Dosyayı kaydedeceğimiz yolu belirtiyoruz.
        reportRun.printJobSettings().fileName("C:\\Temp\\Test.pdf");
        //Raporumuzu çalıştıyoruz.
        reportRun.run();
    //}
}

NOT : Olası bir yetki hatasının önüne geçmek için PDF dosyasını çıkarttığınız dizinde ki klasöre tam yetki verin.

Bir Cevap Yazın