In Dynamics AX, using the Business Connector, how do you call kernel functions?

前端 未结 2 1787
走了就别回头了
走了就别回头了 2020-12-18 09:24

I would like to know how to call kernel functions from AX using C# (.Net Business Connector).

Specifically, can you call methods like fieldName2Id, tableName2Id and

相关标签:
2条回答
  • 2020-12-18 09:33

    I found some workarounds to calling kernel functions:

    tableName2Id

    (I was originally thinking of the tablenum method):

    
       //I used an extension method here  
       public static int GetTableId(this Axapta ax, string tableName)  
       {  
           return (int)ax.CallStaticClassMethod("Global", "tableName2Id", tableName);  
       }
    


    curUserId

    
        //Another extension method  
        public static string CurUserId(this Axapta ax)  
        {  
            return (ax.CallStaticClassMethod("xUserInfo", "find") as AxaptaRecord).get_Field("Id").ToString();  
        }  
    


    fieldName2Id

    (I was originally thinking of the fieldnum method)

    
        //Another extension method  
        public static int GetFieldId(this Axapta ax, string tableName, string fieldName)  
        {  
            AxaptaObject dictionary = ax.CreateAxaptaObject("Dictionary");  
            int fieldId = 0;  
            if (ax.TableExists(tableName))  
            {  
                int tableId = ax.GetTableId(tableName);  
                AxaptaObject dictTable = (AxaptaObject)dictionary.Call("tableObject", tableId);  
                fieldId = (int)dictTable.Call("fieldName2Id", fieldName);  
            }  
            return fieldId;  
        }  
    

    I hope this helps someone else!

    0 讨论(0)
  • 2020-12-18 09:35

    It's better to use:

    Dictionary  dictionary = new Dictionary();
    ;
    dictionary.tableName2Id(...);
    
    0 讨论(0)
提交回复
热议问题