我正在编写一个C#命令行工具来从AX获取数据并向AX添加数据(创建新表).
从AX表中获取数据很简单,并在此处记录:http://msdn.microsoft.com/en-us/library/cc197126.aspx
将数据添加到现有表格也很简单:http://msdn.microsoft.com/en-us/library/aa868997.aspx
但我无法弄清楚如何做两件事:
有人可以分享一些示例代码或指出从哪里开始寻找.我在谷歌和MSDN上的搜索没有透露太多.
注意:我不是经验丰富的AX或ERP开发人员.
假设组合框链接到枚举“ABC”。其中的元素是 A、BC 和 D。
现在我只需要在组合框中获得 A 和 C 而不是 B 和 D?
这可能吗?
如何使用高级过滤(使用x ++)在Ax中进行查询:
我想在SalesTable表单上显示这样的过滤条件SalesTable.SalesId == "001" || SalesLine.LineAmount == 100.
那么结果应该显示SalesOrder 001和其他salesOrders至少有一个SalesLine与LineAmount = 100?
任何人都有任何提示/代码片段,以防止一次打开自定义X ++表单的多个副本?
最佳案例:尝试打开表单的另一个副本,原始收益集中
可接受:用户收到表单已打开的通知
我的任务是在DAX 2012中扩展产品收据的总帐过帐.
在2012年,在我看来,微软已经开始转向使用传统的LedgerVoucher,LedgerVoucherObject和LedgerVoucherTransObject方式向总账进行过帐,以使用源文档框架.
在我的情况下,我将扩展总帐过帐,以便在进行产品收货时进行额外过帐.现在,在进行产品收据更新时,实际上会创建两个凭证.一种是产品实际收货的核算,另一种是产品收货时的应计责任(这是在产品模型组/(现场组"分类帐集成")/(现场)产品收货的累计责任上设置的.
我设法通过修改类InventMovement和使用LedgerVoucherTransObject :: newTransactionsAmountDefault处理方法的updateLedgerPhysical方法来扩展其中一个凭证的发布.
我通过使用调试器并在上面提到的方法中放置一个断点,然后在调用堆栈中回溯跟踪到正确的方法.
但对于其他凭证(应计负债),我无法在哪里查找实际的总帐过帐,因为在我看来,ledgerVOucherTransObject的addTrans方法从未被调用过这个凭证?!?!?!
我已经尝试使用CIL在AOS上进行调试而没有执行CIL,我怀疑源文档框架使用除LedgerVoucher类之外的其他方式发布到总帐.
有没有人对源文档框架有任何经验,特别是如何使用这个框架工作添加总帐过帐,在我的情况下,我必须寻找适合我的modicfication的地方.
我在学习的过程中仍然面临着一些麻烦,所以一旦我和大孩子一起玩,我想它会变得更糟:动态警告不像VS那样精确和有用,没有鼠标悬停提示,例外告诉我我错在哪里.我已经习惯了Visual Studio,它是智能感知和所有工具(与Visual Studio相比,动态是相当新的)
除了解决简单的代码问题之外,我还想学习如何解决我可能在我编写的代码或者我在Visual Studio中3分钟内解决的其他任何代码中的upcomming问题,以及如何在没有所有Visual Studio工具的动态ax.
在我的x ++代码中,我有以下内容
void run() {
try
{
startLengthyOperation();
this.readFile();
}
catch (Exception::Deadlock)
{
retry;
}
catch (Exception::Error)
{
error(strfmt("An error occured while trying to read the file %1", filename));
}
catch
{
error("An unkown error has occured");
}
endLengthyOperation();
}
Run Code Online (Sandbox Code Playgroud)
我正在进行最后一次捕获(之前,我没有得到关于异常的消息).但我想知道什么是真正发生并导致异常.我怎样才能找出异常是什么?
我试图Winapi::findFirstFile在服务器上运行时遇到问题.我已经尝试在类WinapiServer上复制方法,并改变一些行,如下所示:
server static container findFirstFile(str filename)
{
InteropPermission interopPerm;
Binary data;
DLL _winApiDLL;
DLLFunction _findFirstFile;
;
interopPerm = new InteropPermission(InteropKind::DllInterop);
interopPerm.assert();
data = new Binary(592); // size of WIN32_FIND_DATA when sizeof(TCHAR)==2
_winApiDLL = new DLL(#KernelDLL);
_findFirstFile = new DLLFunction(_winApiDLL, 'FindFirstFileW');
_findFirstFile.returns(ExtTypes::DWord);
_findFirstFile.arg(ExtTypes::WString,ExtTypes::Pointer);
return [_findFirstFile.call(filename, data),data.wString(#offset44)];
}
Run Code Online (Sandbox Code Playgroud)
但现在我有另一种错误 库DLL'KERNEL32'上的'FindFirstFileW'函数抛出一个异常.
这是因为我正在x64服务器上执行该方法.有想法解决这个问题的人吗?
我正在使用X ++开发AX 2012,我正在尝试向LogisticsPostalAddress表单部分添加功能.部分功能需要填充表单(保存更改之前),但我似乎无法填充字段.
我找到了使用以下代码的参考:
LogisticsPostalAddress_ZipCode.text("NewCode");
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.如果我使用:
LogisticsPostalAddress.ZipCode = "NewCode";
Run Code Online (Sandbox Code Playgroud)
表单不会更改,但如果我保存并重新打开表单,则表示数据已更改.
我需要填充表单上的字段,以便用户可以在关闭表单之前查看新值.有什么建议?
凯文