В Dynamics AX, используя Business Connector, как вы вызываете функции ядра? - PullRequest
4 голосов
/ 19 мая 2010

Я хотел бы знать, как вызывать функции ядра из AX с использованием C # (.Net Business Connector).

В частности, вы можете вызывать такие методы, как fieldName2Id, tableName2Id и curUserId?

Ответы [ 2 ]

10 голосов
/ 20 мая 2010

Я нашел несколько обходных путей для вызова функций ядра:

tableName2Id

(я изначально думал о tablenum методе):


   //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

(я изначально думал о 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;  
    }  

Надеюсь, это поможет кому-то еще!

0 голосов
/ 16 августа 2018

Лучше использовать:

Dictionary  dictionary = new Dictionary();
;
dictionary.tableName2Id(...);
...