在Dynamics AX中,使用Business Connector,如何调用内核函数?

Bra*_*man 4 axapta business-connector dynamics-ax-2009

我想知道如何使用C#(.Net Business Connector)从AX调用内核函数.

具体来说,你可以调用fieldName2Id,tableName2Id和curUserId等方法吗?

Bra*_*man 10

我找到了一些调用内核函数的变通方法:

tableName2Id

(我原本想到的tablenum方法):


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


curUserId


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


fieldName2Id

(我原本想的是这个fieldnum方法)


    //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;  
    }  
Run Code Online (Sandbox Code Playgroud)

我希望这有助于其他人!