Bra*_*man 4 axapta business-connector dynamics-ax-2009
我想知道如何使用C#(.Net Business Connector)从AX调用内核函数.
具体来说,你可以调用fieldName2Id,tableName2Id和curUserId等方法吗?
Bra*_*man 10
我找到了一些调用内核函数的变通方法:
(我原本想到的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)
//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)
(我原本想的是这个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)
我希望这有助于其他人!