Table inheritance roots

I’m preparing a talk about table inheritance in AX 2012 and I wanted to know how many hierarchies exist in standard AX. Therefore I looked for all tables with SupportsInheritance = Yes and Extends = “”. It’s more than I expected (collected in AX 2012 R3): AgreementHeader AgreementHeaderExt_RU AgreementHeaderHistory AgreementHeaderHistoryExt_RU AgreementLine AgreementLineHistory AifDocumentFilter AifEndpointActionValueMap AifPort …

Continue reading ‘Table inheritance roots’ »

Printing dynamic parameters (AX 2012 / SSRS)

In addition to parameters specified in data contracts, reports can also use queries. It’s very handy, because users can specify filters and sorting in exactly the same way as they’re used to from other places in Dynamics AX, they can use query expressions and so on. A relative common request is printing parameter values on …

Continue reading ‘Printing dynamic parameters (AX 2012 / SSRS)’ »

Replacement groups in AX 2012

AX 2012 introduced a new type of form control called “Replacement group”. It’s very handy, nevertheless quite a few developers still don’t know about it or are not sure how to use it effectively. This post is not going to details; the intention is rather to show something simple, though still from end to end. …

Continue reading ‘Replacement groups in AX 2012’ »

XML DocType in X++

Let’s say that we want to use X++ to create an XML file with the following DocType definition: <!DOCTYPE MyType SYSTEM "http://www.validome.org/check/test.dtd"> AX has Xml* classes (e.g. XmlDocument) for such purpose, but let’s build it with .NET classes first (you’ll see why in a moment). This is X++ code calling .NET classes through .NET Interop: …

Continue reading ‘XML DocType in X++’ »

Operand types are not compatible

I managed to produce a really confusing error in AX 2012. Look at the following piece of code: MyExtendedDataType a, b; a = b; Pretty boring, isn’t it? There is nothing to fail… except that I got a compilation error: Operand types are not compatible with the operator. What? Actually it become quite clear as …

Continue reading ‘Operand types are not compatible’ »