Dynamics AX
  RSS Feed  LinkedIn  Twitter
Want to turn you're data into a true asset? Ready to break free from the report factory?
Ready to gain true insights that are action focused for truly data informed decisions?
Want to do all of this across mutliple companies, instances of Dynamics and your other investments?
Hillstar Business Intelligence is the answer then! (www.HillstarBI.com)

Hillstar Business Intelligence for Microsoft Dynamics AX and NAV on Mobile, Desktop, Tablet


Let us prove to you how we can take the complexity out of the schema and truly enable users to answer the needed questions to run your business! Visit Hillstar Business Solutions at: www.HillstarBI.com

Tuesday, January 24, 2006

Writing a report to file, through code

I was working with another co-worker on a way to generate reports in AX as a PDF, and then Automatically email these out. One of the first things that needed to be done was call the report and save it to a file, without having user interaction.

Below is code that will call the SalesInvoice and generate it as a PDF file:

CustInvoiceJour InvJTbl;
SalesId Id;
ReportRun report;
RecordSortedList List = new RecordSortedList(62);

Id = "SO-0000123";

Select InvJTbl Where InvJTbl.SalesId == Id;
List.ins(InvJTbl);
report = new ReportRun(new Args(ReportStr(SalesInvoice)));
report.args().caller(null);
report.args().parmEnum(1);
report.args().parmEnumType(920);
report.args().object(List);
report.args().name("KeepSettings");
report.printJobSettings().setTarget(PrintMedium::File);
report.printJobSettings().format(PrintFormat::PDF);
report.printJobSettings().fileName("C:\\Temp\\Test.pdf");
report.prompt();
report.run();

This code can be expanded on from here. Hopefully someone can get some use out of this, as we did. To give a better idea, we used this to generate EI's or Electronic Invoices. This was done so that One invoice would exists, instead of having to maintain an Axapta Invoice, and then a Sepearate one for the HTML emailed version that some customers got.

All in all it worked out pretty good, there are some differences though that you have to deal with. The PDF may come out slightly different looking (ie: Company Logo) than what it looks like from within AX.

Find a job at: www.DynamicsAXJobs.com

Wednesday, January 18, 2006

WinAPI::sndPlaySound()

Ever wanted to give a audio based interaction, to when a user does something? In the past windows based applications incorporated sound to signal that a process what complete.

Now you can add sounds to your methods, and processes by using the WinAPI call: WinAPI::sndPlaySound()

//example
WinAPI::sndPlaySound("c:\\horay.wav");

This is a little simple, trival type of method to some. Put if AX is being used in the production process, and you have screen's at different processes then having sound to signal that a barcode scan has completed correctly helps in a loud Manufacturing environment. I also assume you could acomplish the same thing through ActiveX and MIDI control. I am not sure what would be the best way, for performance, to play a sound, but for development cost, the above is pretty easy and straight forward.

Find a job at: www.DynamicsAXJobs.com

Friday, January 13, 2006

Virtual Companies

Something that is of much discussion during a new AX setup is Virtual Companies, and Virtual Company tables.

Virtual companies may be a little mis-leading in the name, but once you better understand the concept the name make a little more sense. You see with virtual companies, you can share data, table(s), etc. between company accounts that live within your AX environment. For example where I currently am, we have 3 company locations, and we just added a fourth. Becuase we thought out the virtual company setup process, we were able to share: Items, Base data like Zips, etc., and Even General Ledger (Because the company post taxes as a single entity)

Sharing this data made it possible for easy setup of new companies, which all worked off of the same ledgers and same item base. Now you might be asking yourself how do you share tables / data? Well once you created your Virtual companies (Administration > Setup > Virtual Company Accounts) then you can take and create new table collection(s). From here you can add the tables you would like to share between all your given companies. Once that is done, then you can go back to the Virtual company accounts screen, and select for the given virtual company what table collections belong to it. Once that is done, then you can share that given data.

I must say here now, that you must be very careful when selecting tables to share. Certain tables were not meant to be shared, so really investigate the tables, and get every table that is part of the given "area or module" you wish to share. It is also important to note that any data entered into a table that is later shared will disappear. The trick is go to the given table through SQL enterprise Manager, and update the DataAreaId to the given 3 character value that is the idenity of your Virutal Company. Once you do that, then come back into AX and syncronize those tables. The table will appear back and ready to be used, through a shared view.

I could go further into virtual companies, and I will in the future but I think that's enough for now. As always if anyone has any specific questions please let me know by using the comments below!

Find a job at: www.DynamicsAXJobs.com

Thursday, January 12, 2006

DynamicsAXJobs.com Update New year - more postings!

With the new year has brought on new looking for AX talent. We have had one company purchase searching rights to the entire job seeker database, and also two more job postings. Totals are:

Job Seekers: 158
Employers: 30
Current Active Jobs: 2

The new year seems to bring promise of more AX work, and positions world wide. Check back soon for more updates!

Find a job at: www.DynamicsAXJobs.com

Tuesday, January 10, 2006

Quest for X++ Certification

The new year brings new desires. I have been talking about getting X++ certified for a few months now, and have been putting it off. Now, with new things that I will explain later, I have good reason to go and get X++ certified and then move on to Trade and Logistics.

So with that said, and prelude to another post later this week, I will be posting about my experince with taking the X++ exam, studying for it, and what I studied. From what I gather though, the best thing is 6+ months of exp. in X++ / AX and then read over the Developer's Best Practice Handbook.

That's all for now, and check back later this week (Around Friday) for a big post about what I will soon be doing!

Find a job at: www.DynamicsAXJobs.com

Monday, January 09, 2006

Strange issue with Currency

Just resolved a strange issue with Currency. We have a Canadian customer that was setup for USD instead of CAD. Well Some sales orders were entered in for the customer, and were changed when then customer was setup as CAD. The Sales orders and the customer record were all updated.

When we tried to post invoice for the given sales order though problems started popping up about the General Ledger Journal that it was trying to post to.

Turns out, that there was a Misc. Charge created for the sales order when the sales order was still marked as USD. So this Misc. Charge never got changed to CAD and caused porblems when we tried to post it. Below is the error message that should give you a clue into what is going on:

'Warning Posting The transactions on voucher 'SI00017978' do not balance as per '1/5/2006'. (Company currency: -11.00 - secondary currency: 0.00)'

This message is similar to a one were the rounding may not be set correctly for the given currency, but in turn it was because there was a misc charge or charge in general that was listed as a differnt currency than the given sales order.

Find a job at: www.DynamicsAXJobs.com

"Dynamics AX: A Guide to Microsoft Axapta"

Recently I reviewed the book: "Dynamics AX: A Guide to Microsoft Axapta". To start off this book it well writen, and well put together. It has screen shots, and good easy to understand intructions. You can tell the Authors have a lot of experince, and can carry themselves well in the writen word.

Now with that said, this book is great for someone new to AX. If you have at least 3-6 months of experince, you will not get that much out of this book. It does give high (very) overviews of different modules, which are great, espcially if you have never used those modules. Let me also say the claim of this book seems to be for beginners, as it's listed as so on the back of the book. All in all, the overall book for me get's 7 out of 10. This is based on my two number ranking system, one for newbie's (8 out of 10) and one for experinced AX pro's (6 out of 10).

The reason why it ranks slow low for the pro's is because it's not worth the $60.00 for the given content, it is however for a newbie, and I would recommend anyone new to AX get the book.

Find a job at: www.DynamicsAXJobs.com

Thursday, January 05, 2006

Execute a DTS package from X++

Recently someone asked how to execute a DTS package from X++. This was a great question and great timing because I had just recently completed a project that had to execute a DTS package. Below is the code that will allow you to do this:

protected void runDTSpkg()
{
OdbcConnection cn;
ResultSet rs;
Statement s;
str SQL;
str temp;
;

// Open up a connection to the Master Database, and execute the DTS package
cn = this.CN("master");
s = cn.createStatement();
SQL = "xp_cmdshell 'dtsrun /SVSQL /Usomeuser /Pblocked /NPumpOverCS_SHIP'";
rs = s.executeQuery(SQL);
while(rs.next())
{
// Here you could see if an error occurs, or just use this loop to allow the DTS to finsih.
temp = rs.getString(1);
MMI_ErrLog::logError("PkgScoop",strfmt("%1",temp));
}
}

So there are a couple of things I want to point out here. One is the actual statement used to do this:

xp_cmdshell 'dtsrun /SVSQL /Usomeuser /Pblocked /NPumpOverCS_SHIP'
The /S = Server Name, /U = User Name, /P = Password /N = Name of DTS package to execute. Notice that the parms are ran together with what your passing. This Must happen or you get an error.

Another thing I wanted to point out was that I do a while(rs.next()) {...} for the resultset. When executing a DTS package through the stored procedure xp_cmdshell results are returned telling you about what is going on. You can read these results and act on them, or do like I do and just put them into a general log table. Whatever you do though, you must preform the while(rs.next()) {...} so you can allow the DTS to fully finish before you continue to your next block of code that I assume would operate on the data that the DTS package brought in / manipulated, etc.

Well Check back soon for more handy tips and tricks!

Find a job at: www.DynamicsAXJobs.com

Wednesday, January 04, 2006

Voiding a Check in Axapta

I am trying to delete a check, from the Bank module > Checks. From there I select a check that I want to delete. A pop-up occurs, and so I enter the range which is 3011 - 3011 (one check), and enter the word 'delete'. When I do this I get the following warning:

"Checks exist in the interval with status other than created."

The reason this was being given to me as a warning was because once a check has been posted and marked as paid, the only way to 'void' it is through Bank > Checks > Payment Reversal. This will take the check, and date selected, and use that to create a journal entry that will offset / reverse the posting as paid on the AP transactions. Then it will mark the check as Canceled.

In order to use the 'Delete Checks' function, a check must be in a Created status. If the check is not in a created status, then a 'Payment Reversal' must be done.

You can find out more about payment reversal and working with checks from within the documentation given on the Axapta CDs.

Find a job at: www.DynamicsAXJobs.com

Monday, January 02, 2006

Single Node vs. Shared for AOS

Someone asked me on tech-unity.com the difference between a Single Node vs. Shared for setting up an AOS. I found the below to be very helpful:

Single Node Object Server

(Exclusive mode/Advanced Object Server)
The Exclusive Mode of the AOS applies to systems where one AOS services an application exclusively to all clients. In such an environment, only one AOS operates for each application running. This gives wider possibilities for exploiting caching mechanisms to obtain better basic throughput. It also provides efficient means for obtaining One-system Awareness (the situation where all clients are known and controlled by one central instance capable of dispatching messages, reporting on complete system condition, and managing all sessions).

Load Sharing Object Server

(Shared mode/Parallel Object Server)
The Shared mode of AOS is used in situations where AOS, for any reason, must coexist with other AOS (or during migration to the AOS environment, to coexist with standard 2-tier Axapta clients accessing the same application and data resources). In the Shared mode, the AOS allows others to access the application object database (AOD). This allows starting multiple AOSes (at different Windows NT Servers) servicing the same network-shared application, and accessing the same data at the SQL server. This mode gives a reduced basic throughput (compared to the Exclusive mode AOS) due to the reduced possibilities with respect to caching, but it provides a wider specter of scalability by allowing a number of Object Servers to run in parallel. Using the Load Balanced Client Connect feature of Axapta, the client sessions are distributed over the servers available when a client logs in. In such an installation, even servers of different capacity can cooperate on servicing clients in the load-distributed AOS environment.

There is some more great information where I found this at: CenterLineERP


Find a job at: www.DynamicsAXJobs.com


Copyright 2005-2011, J. Brandon George - All rights Reserved