20 Nisan 2012 Cuma

AXAPTA - Common DLL kullanımı

Öncelikle DLL dosyasını Program Files altındaki Axapta klasöründe Client\Bin altına atın. Benim bilgisayarımda bu klasörün adı:
C:\Program Files (x86)\Microsoft Dynamics AX\50\Client\Bin\

Arg methodu ile extTypes enum ile parametre tipleri belirtilir. Kullanımı:

void Test()
{
    DLL                 testDll;
    DLLFunction         test;
    ;

    testDll = new DLL("MyTestDLL.dll");
    test = new DLLFunction(printDLL, "MyTestingMethod");
    test.arg(extTypes::Word ,extTypes::String);
   test.call(12345,"ABCDE");
}

6 Nisan 2012 Cuma

AXAPTA - ascii yazdırma ve string boyu

mylen = StrLen("benim deneme stringim...");

alfabenin_ilk_harfi = num2char(65);

AXAPTA - Global fonksiyon tanımlama

Static methodunuzu AOT->classes->Global sınıfına ekleyin:

public static void Test()
{
;
info("my global function");
}

***
static void TestMyGlobalFunction(Args _args)
{
;
test();
}

AXAPTA - stringi trim etmek

static void Job47(Args _args)
{
str a;
;
a=StrRtrim("fdssf ");
a=StrLtrim(" fdssf");
}

7 Şubat 2012 Salı

AXAPTA Validate işleminde tek komutta mesaj verip false değer döndürmek

Checkfailed fonksiyonu bu işi yapıyor. Böylece iki satırda yapılabilecek bir işlem tek satıra iniyor.

if (b_SerialTrans.RefType !=B_SerialRefType::ServiceObjectRelation)
        return checkFailed("Bu kayıt silinemez!..");

27 Aralık 2011 Salı

AXAPTA runbase dialog

void clicked()
{
    Dialog      dialog;
    DialogField DEmplId;
    DialogField DApp;
    DialogField DAppDesc;
    ;

    dialog = new Dialog("@SYS108667");
    DApp     = dialog.addField(typeId(B_Approval));
    DAppDesc = dialog.addField(typeId(Description));
    DEmplId  = dialog.addField(typeId(EmplId));

    DApp.value(B_RepairJournalPartsChangeLines.Approval);
    DAppDesc.value(B_RepairJournalPartsChangeLines.ApprovalDescription);
    DEmplId.value(SysCompanyUserInfo::find(CurUserId()).EmplId);

    dialog.run(); // show

    if (dialog.closedOK())
    {
        ttsbegin;
        B_RepairJournalPartsChangeLines.Approval            = DApp.value();
        B_RepairJournalPartsChangeLines.ApprovalDescription = DAppDesc.value();
        B_RepairJournalPartsChangeLines.ApproveEmplId       = DEmplId.value();
        element.redraw();
        ttscommit;
    }
}
 
Not: AX 2012 ile birlikte kalkan typeId() yerine enumlar için enumStr(), diğer veri tipleri için extendedTypeStr() kullanılabilir.

AXAPTA stok transfer günlüğü post

    journalTableData        journalTabledata;
    inventJournalTable      inventJournalTable;
    InventJournalCheckPost  journalCheckPost;
    ;
    inventJournalTable = inventJournalTable::find(Line.InventJournalId);
    // Posting Journal
    journalTableData = JournalTableData::newTable(inventJournalTable);
    journalTableData.updateBlock(JournalBlockLevel::InUse,JournalBlockLevel::None);
    if (infolog.num(Exception::Error))
        return;
    infolog.clear(0);
    journalCheckPost =
    InventjournalCheckPost::newJournalCheckPost(JournalCheckPostType::Post,InventJournalTable);
    journalCheckPost.parmAutoBlock(true);
    journalCheckPost.run();
    if(journalTableData.hasErrors())
        return;