![]() |
#1 |
Участник
|
axStart: Please keep the AOT reports in Dynamics AX next release alive
Источник: http://axstart.spaces.live.com/Blog/...C0A0!440.entry
============== With AX 2009 a whole bunch of new futures are introduced. But I want to focus especially on the next 2 features: Archiving of data & Visual Studio integration for Reports. Archiving of data: This has been developed with the following requirements (this list is shown on the convergence 2008): · Database Layout Intelligence · Business Usage Intelligence · Intelligent Alerting · Automatic Configurability of Business Objects · Master Data Synchronization Capability · Ability to Purge · Ability to Archive with Financial Year as starting point · Ability to Offline an Unused Company · Ability to restore data* · Extensive Scheduling Capabilities · Extensive Audit trails for Purge and Archive ![]() Visual Studio integration for Reports The previous picture also shows the future of this feature. In Phase 2, SSRS is introduced. Creating reports on SSRS is creating reports in Visual studio. So let’s consider the following scenario: Customer X phones his supplier about a invoice from 2 years ago. This supplier can respond in 4 ways: A. Please call back next week, by then we have restored the data and are able to get the same invoice on screen (AOT report). B. The supplier opens AX and is able to reproduce the invoice, (Visual Studio BI report) C. No problem we don’t archive (AOT report). D. Sorry support on sold items more than 1 year ago is not possible, good bye. (we are not able to restore the data) Option B is the preferred solution from Microsoft so our AOT reports get obsolete. Ouch…. The Dynamics AX partner has to do all AX reporting in Visual Studio. In my opinion it is mission impossible to rebuild all AOT reports in Visual Studio, especially the Sales & Purchase and Project Invoice reports. Think about the nice features like: · Model Fieldname property for outlining columns that belong to different report sections, it’s gone. · There is no fetch method. · The .Net Connector does not support joins on Tables, neither is the new dataset for Visual Studio EP development supported. A work around could be using the Views for every Query or the with .net code shown on the end of this article. · The .Net connector act like a black box for the c# developer. There is no clever code generation for type save coding against the .net connector. I have not spoken about the cost of ownership and the reliability of this new future and I’m not saying that this approach is really helping my customers either. But I’m really worried about the new strategy of Microsoft. The current Visual Studio Ax Reports also combine real time data (live) with archived data (OLAP). there is always latency between them. The aim of this article is not to blame MS, but to help them with feedback so that the next generation tools get better. publicstaticstring DataMethodJoin() { DataTable result = newDataTable(); Boolean fistTime = true; //create Query AxaptaObjectWrapper query = SessionManager.GetSession().CreateAxaptaObject("Query"); AxaptaObjectWrapper CustTableDs = (AxaptaObjectWrapper)query.Call("addDataSource", 77);//CustTable; AxaptaObjectWrapper CustTransDs = (AxaptaObjectWrapper)CustTableDs.Call("addDataSource", 78);//CustTrans; CustTransDs.Call("relations", true); //add ranges AxaptaObjectWrapper range = (AxaptaObjectWrapper) SessionManager.GetSession().CallStaticClassMethod("SysQuery", "findOrCreateRange", CustTableDs.AxaptaObject, 1);//1 = Field AccountNUm range.Call("value", "1101"); //execute Query AxaptaObjectWrapper queryRun = SessionManager.GetSession().CreateAxaptaObject("QueryRun", query.AxaptaObject); while ((Boolean)queryRun.Call("next")) { AxaptaRecordWrapper CustTable = SessionManager.GetSession().CreateAxaptaRecord(queryRun.Call("get", 77));//CustTable; AxaptaRecordWrapper CustTrans = SessionManager.GetSession().CreateAxaptaRecord(queryRun.Call("get",78));//CustTrans; if(fistTime) { fistTime = false; result.Columns.Add(newDataColumn("AccountNum",Type.GetType("System.String"))); result.Columns.Add(newDataColumn("Name", Type.GetType("System.String"))); result.Columns.Add(newDataColumn("Voucher", Type.GetType("System.String"))); result.Columns.Add(newDataColumn("AmountCur", Type.GetType("System.String"))); } result.Rows.Add( CustTable.GetField("AccountNum").ToString(), CustTable.GetField("Name").ToString(), CustTrans.GetField("Voucher").ToString(), CustTrans.GetField("AmountCur").ToString()); } return result; } ![]() ![]() Источник: http://axstart.spaces.live.com/Blog/...C0A0!440.entry
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору. |
|
|
|