Axapta 向查询表单添加字段时出错

Axapta 向查询表单添加字段时出错,axapta,dynamics-ax-2012-r3,Axapta,Dynamics Ax 2012 R3,使用凭证交易查询,我向GeneralJournalEntry表添加了一个自定义字段 当我尝试将此字段添加到查询表单时,它会以下拉形式正确添加渲染,并且我可以输入一个值或从下拉列表中选择一个值-问题是如果我尝试输入通配符*,我将得到堆栈跟踪错误: SysDictType object not initialized. (S)\Classes\SysTableRelation\getDictFieldID - line 7 (S)\Classes\SysTableRelation\findRel

使用凭证交易查询,我向GeneralJournalEntry表添加了一个自定义字段

当我尝试将此字段添加到查询表单时,它会以下拉形式正确添加渲染,并且我可以输入一个值或从下拉列表中选择一个值-问题是如果我尝试输入通配符*,我将得到堆栈跟踪错误:

SysDictType object not initialized.


(S)\Classes\SysTableRelation\getDictFieldID - line 7
(S)\Classes\SysTableRelation\findRelation - line 41
(C)\Classes\SysLookup\lookupTableRelation - line 13
(C)\Classes\SysLookup\lookupRange - line 133
(C)\Forms\SysQueryForm\Data Sources\Range\Fields\RangeValue\Methods\lookup - line 36
(C)\Classes\FormStringControl\PerformDBLookup
(C)\Classes\FormStringControl\lookup
(C)\Forms\SysQueryForm\Designs\DesignList\RangeValue\Methods\lookup - line 27

这些类没有任何修改,我也找不到任何可能导致我认为该字段中的通配符无效的内容。

我猜您还没有完全编译/同步所有内容和/或需要重新启动AOS。不过,您应该能够使用调试器对此进行调试

如果查看堆栈跟踪顶部的代码,它指的是这段代码:

dictType = new SysDictType(sysDictField.typeId());
if(dictType.arraySize() > 1) // <--This is the error...that it's not initialized
您可以看到我在哪里添加了注释,如果没有初始化,则表示上面的行无法创建dict类型。然而,sysDictField在返回typeId时没有问题


在\Classes\SysTableRelation\getDictFieldID-第7行上放置一个断点,看看问题出在哪里。我怀疑这只是环境问题,一些编译/重新启动将修复。

出现此问题是因为方法\SysTableRelation\getDictFieldID使用dictType=new SysDictType sysDictField.typeId行中字段的EDT


我通过在字段中添加EDT进行了修复。

是的,最终不同修改的某些工作出现了问题,而EDT丢失是罪魁祸首