在AX我有几个实体.当我尝试发布未发布的时间表时,除了我遇到SQL错误之外的所有实体都可以正常工作:"从字符串转换日期和/或时间时转换失败"
调用堆栈如下:
在突出显示的方法中,我看到它在AccountDistribution表中找不到任何SourceDocumentHeader,因此AccountingDate为空.
有没有人遇到同样的问题,知道如何解决它?对我来说很奇怪,因为所有其他实体都可以正常工作.
谢谢.
sql-server microsoft-dynamics ssms axapta dynamics-ax-2012-r2
我的任务是在DAX 2012中扩展产品收据的总帐过帐.
在2012年,在我看来,微软已经开始转向使用传统的LedgerVoucher,LedgerVoucherObject和LedgerVoucherTransObject方式向总账进行过帐,以使用源文档框架.
在我的情况下,我将扩展总帐过帐,以便在进行产品收货时进行额外过帐.现在,在进行产品收据更新时,实际上会创建两个凭证.一种是产品实际收货的核算,另一种是产品收货时的应计责任(这是在产品模型组/(现场组"分类帐集成")/(现场)产品收货的累计责任上设置的.
我设法通过修改类InventMovement和使用LedgerVoucherTransObject :: newTransactionsAmountDefault处理方法的updateLedgerPhysical方法来扩展其中一个凭证的发布.
我通过使用调试器并在上面提到的方法中放置一个断点,然后在调用堆栈中回溯跟踪到正确的方法.
但对于其他凭证(应计负债),我无法在哪里查找实际的总帐过帐,因为在我看来,ledgerVOucherTransObject的addTrans方法从未被调用过这个凭证?!?!?!
我已经尝试使用CIL在AOS上进行调试而没有执行CIL,我怀疑源文档框架使用除LedgerVoucher类之外的其他方式发布到总帐.
有没有人对源文档框架有任何经验,特别是如何使用这个框架工作添加总帐过帐,在我的情况下,我必须寻找适合我的modicfication的地方.
我想在两个表单之间传递多个记录.用户打开Form-A,选择多个记录,然后单击打开Form-B的按钮.在Form-B中有两个(或更多)StringEdit
控件,它们应显示所选记录的值.
我知道如何只传递一条记录,为此我在Form-B的方法中使用以下代码:
if (element.args().parmEnumType() == enumNum(NoYes)
&& element.args().parmEnum() == NoYes::Yes)
{
myTable = element.args().record();
stringEdit.text(myTable.Field);
}
Run Code Online (Sandbox Code Playgroud)
我应该如何更改我的代码,以便我可以将另一个StringEdit
控件的文本设置为用户选择的下一条记录的字段值?
我正在调查AX 2012中新代表和事件订阅模式的功能.
目前,我希望检测特定字段何时被修改,例如何时SalesTable.SalesStatus
更改为SalesStatus::Invoiced
.
我创建了以下事件后处理程序并附加到SalesTable.Update方法;
public static void SalesTable_UpdatePosteventHandler(XppPrePostArgs _args)
{
Info("Sales Update Event Handler");
}
Run Code Online (Sandbox Code Playgroud)
现在我知道我可以得到SalesTable
从_args
,但我怎么能检测场发生了变化?我真的可以使用前后版本,这让我觉得我在这里订阅了错误的事件.
为了进行讨论,我将使用SalesTable/SalesLine 。
我有一个简单的表单,其中包含两个数据源SalesTable和SalesLine,其中SalesLine连接到SalesTable。有一个标题和行网格。标题网格有属性MultiSelect = Yes
当我从网格中选择 3 个SalesTable记录时,有没有办法让它以某种本机样式显示下部网格中三个选定的SalesTable记录中的所有SalesLine记录?
我知道我可以通过某种代码以某种方式完成此任务,但我认为这可以通过设计模式以某种方式通过表单和数据源属性来完成?对我来说,您可以选择/突出显示三个标题记录,并且 AX 只会使行网格仅显示标题:子行对之一,这对我来说没有意义。
我需要获取表格中所有显示方法的列表,而我似乎无法在网络上找到任何相关信息.
有人知道怎么做吗?
我使用向导向导在AX 2012中创建了一个向导...现在我需要根据用户输入放置1个功能,即启用或禁用FINISH按钮.
我已经尝试过这3种方法但没有成功..
this.finishenabled() - 关于向导类的SetupNavigation方法
finishenabled [formrun.tabidx()] = false - 关于向导类的SetupNavigation方法
syswizard.finishenable(false,curtabidx(),false) - 在向导表单的Tabpage上
如果有人有解决方案,请回复....
我有一个AX2012R2 CU6(构建和客户端6.2.1000.1437,内核6.2.1000.5268),有以下问题:
在AP>日记帐>发票>发票日记帐>行(表单LedgerJournalTransVendInvoice)中,当我选择供应商作为帐户类型然后在帐户字段上激活查找时,AX会冻结几分钟,当它恢复时,查找将关闭/从不打开.每当帐户类型供应商,其他帐户类型工作正常时,就会发生这种情况.
我把它调试到LedgerJournalEngine.accountNumLookup() - > VendTable.lookupVendor line
formSegmentedEntryControl.performFormLookup(formRun);
上述过程占用了时间.
在聘请驱魔人之前有任何想法吗?
我有这个功能可以从CSV文件更新价格清单,但需要花费太长时间才能完成(9小时aprox.).
结构文件有2个主要部分,记录行(行)和10个可能的维度(不是AX维度)的价格类型(列).
它已经在运行,但客户要求替代方案,因为该过程需要太多时间才能完成.
是否可以在axapta中插入,更新或删除crossCompany?
我想这样做,在我的查询调试我有这个:
select forUpdate crossCompany tlRemoteLocationInfo
where tlRemoteLocationInfo.RemoteLocationId == "someId";
if (tlRemoteLocationInfo.RecId)
{
ttsBegin;
changeCompany(tlRemoteLocationInfo.dataAreaId)
//then i make mi update to fields and then i make this:
tlRemoteLocationInfo.update();
ttsCommit;
}
Run Code Online (Sandbox Code Playgroud)
我有一个try catch,并且调试,无法在方法tlRemoteLocationInfo.update()中更新,例外是:
$ exception {"Se produjounaexppcióndetipo'Microsoft.Dynamics.Ax.Xpp.ErrorException'."} System.Exception {Microsoft.Dynamics.Ax.Xpp.ErrorException}
我错过了什么?
我已经阅读了 msdn 文章,阅读了有关数字序列的白皮书,并制作了很多次数字序列。但在这种情况下我需要一些帮助。
场景是;我想通过 x++ 代码仅使用数字序列代码而不使用引用等来获取下一个序列号。
我尝试过以下(以及许多其他解决方案,但这是最接近的解决方案);
static void myTestJob(Args _args)
{
NumberSeq num;
num = NumberSeq::newGetNumFromCode('SAO-Y');
info(num.num()) ;
}
Run Code Online (Sandbox Code Playgroud)
它针对某些数字序列代码生成数字序列,但对于其他数字序列,它会抛出错误:
“编号规则不存在。”
我已经尝试了许多其他博客中提到的许多其他选项,并尝试探索 AX,但现在需要一些帮助。
PS 我不是使用 x++ 代码而是从前端(组织管理)创建数字序列。
我发现,在开发期间,对同一服务进行多次部署时,AIF服务会中断,当您访问入站端口时会出现神秘错误.您可以通过打开AIF服务表单(AOT,表单,AIF服务)并单击"刷新"按钮来刷新AIF服务.完成大约需要15分钟.
关于为什么需要这么长时间以及实际做什么的任何想法?
谢谢.