Showing posts with label Tip. Show all posts
Showing posts with label Tip. Show all posts

Friday, July 26, 2013

Create Dynamic Table in the X++

AX상에서 테이블 생성을 Manual로 일일이 작업하는 동료를 보며, SQL처럼 스크립트 같은걸 만들어 놓고 동일 작업이 필요할 경우 작업할 수 있는 방법은 없을지 찾다가 발견한 솔루션입니다.

이 내용을 통해서, 많은 X++ Developer들의 개발 생산성이 향상되길 빌며…

static void newTableCreate(Args _args)
{
    TreeNode treeNode;
    AOTTableFieldList fieldList;
    #AOT
    ;
    treeNode = TreeNode::findNode(#TablesPath);

    treeNode.AOTadd("KOR_SalesTable");
    SqlDataDictionary::synchronize();

    fieldList = treeNode.AOTfindChild('KOR_Table').AOTfindChild('fields');
    fieldList.addString('KOR_Field1');
    fieldList.addString('KOR_Field2);

    SqlDataDictionary::synchronize();
    print "Table Created";
    pause;
}

Thursday, July 25, 2013

Query Object의 내용을 문자열로 Export

AX 개발시에 Query Object를 만든 후 해당 내용을 다시 문자열로 Export 받아 코드 레벨의 Query Object 생성시 재사용할 수 있는 방법은 없을까 방법을 찾다가 아래와 같은 방법이 있음을 알아냈다.

◈ Query Object

image

◈위 내용을 문자열로 Export 받은 내용

Query Proc_PurchSummary object 2320c548: SELECT * FROM VendPurchOrderJour(VendPurchOrderJour_1) JOIN * FROM PurchLineAllVersions(PurchLineAllVersions_1) ON VendPurchOrderJour.RecId = PurchLineAllVersions.PurchTableVersionRecId JOIN * FROM VendTable(VendTable_1) ON PurchLineAllVersions.VendAccount = VendTable.AccountNum JOIN * FROM DirPartyTable(DirPartyTable_1) ON VendTable.Party = DirPartyTable.RecId JOIN * FROM InventDim(InventDim_1) ON PurchLineAllVersions.InventDimId = InventDim.inventDimId JOIN * FROM InventLocation(InventLocation_1) ON InventDim.InventLocationId = InventLocation.InventLocationId JOIN * FROM PurchTable(PurchTable_1) ON VendPurchOrderJour.PurchId = PurchTable.PurchId AND ((DocumentState=40)) JOIN * FROM HcmWorker(HcmWorker_1) ON PurchTable.WorkerPurchPlacer = HcmWorker.RecId JOIN * FROM DirPerson(DirPerson_1) ON HcmWorker.Person = DirPerson.RecId

◈Export 받는 방법

static void Job1(Args _args)  // X++ job.
{
    Query q = new Query(queryStr(Proc_PurchSummary));
    QueryRun qr = new QueryRun(q);
    info(q.toString());

}