After developing for more than 1 year on AX 2012. I have seen the blesses and the blames of table inheritance.
Let’s start on the blesses:
- Use always a query on your form with the option OnlyFetchActive. The buffer of the form will only be filled with fields that are used on the form. But be aware that the active record also does not have all the fields. But the recid is always there, so an addition find by recid can help you out.
- Using the base table for the main data works fast.
- Field groups defined on the derived Table can use fields of the parent Table.
And now the ugly part
- Indexes are a pain in the #$%. You can’t have an index that have parent and child field on the same time. This is strange because on the end in SQL it is one table.
- Field groups do not inherent. So reuse of field groups with additional field of the derived table does not work out. So you get 2 field groups on your form.
From design point of view in AX 2012. In case my base table is company independent, why should my derived table also be company independent. It looks stage but I have seen implementation where this was the case, now we had to do it with security rules.