Our support engineers have assembled the top recommended solutions for you.
Microsoft Dynamics AX 2012CRM Connector in Microsoft Dynamics AX 2012Financials Management in Microsoft Dynamics AX 2012Upgrading to Microsoft Dynamics AX 2012
Microsoft Dynamics AX 2009
Application Object Server (AOS)
Enterprise Portal and Role Centers
Inventory Costing in Microsoft Dynamics AX 2009
Invoice Settlements/Discounts/Reversals
SSRS and SSAS Integration
Workflow
I have some code in X++ that looks like this: `fieldNum(InventDim, configId)`
I need to duplicate this code in C# for an AX2012 Interop program. I need to do this becuase I need to call the method
`EcoResProductDimensionAttribute::inventDimFieldId2DimensionAttributeRecId(FieldId _inventDimFieldId)`
I know how to make the call in C# but I am completely unsure how to get the FieldId. I did find an article http://msdn.microsoft.com/en-us/library/cc616802.aspx that discusses using the dll Microsoft.Dynamics.AX.Framework.Services.Client to get access to those specific methods but my AX2012 Environment has no DLL file named Microsoft.Dynamics.AX.Framework.Services.Client. Is there some other way to call the above method or a different call to get access to the FieldId?
You have to remember fieldNum is actually a pre-compiler instruction that translates that field name into a field ID in the actual compiled x++ code. That doesn't quite exist from the .NET end.
What you can do however is use fieldName2Id, which I believe is a function on the global class or perhaps a static method on dicttable/sysdicttable or dictfield.
Dynamics AX MVP | My Blog | Sikich | Twitter @JorisdG
So then how do I call methods in .NET that require FieldIds? There must be a way. I looked for the FieldName2Id method and found it only in the AifUtil class which states it should only be used my Microsoft internally.
TableDataFieldMetadata is indeed in Microsoft.Dynamics.AX.Framework.Services.Client namespace, but in Microsoft.Dynamics.Framework.Metadata.AX assembly (can be found in GAC).
Just for information:
fieldName2Id() is a system method (in AOT under System Documentation > Functions), but you could easily write your own wrapper method in a custom class.
Joris also suggested SysDictField class - you could use factory methods newName() or findFieldByName() and id() to get the value.
[ Goshoom.NET Dev Blog ]