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

Error when adding field to Inquiry form

使用凭证交易查询,我已将自定义字段添加到 GeneralJournalEntry table。

当我尝试将此字段添加到我的查询表单时,它添加正确(呈现为下拉列表),我可以输入一个值或 select 从下拉列表中输入一个值 -- 问题如果我尝试输入通配符 (*),我将收到堆栈跟踪错误:

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

这些 类 没有任何修改,我找不到任何可以让我相信通配符在此字段中无效的内容。

我猜你还没有完全 compiled/sync 完成所有 and/or 需要重新启动 AOS。不过,您应该可以使用调试器对其进行调试。

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

dictType = new SysDictType(sysDictField.typeId());
if(dictType.arraySize() > 1) // <--This is the error...that it's not initialized

你可以看到我在哪里添加了我的评论,如果没有初始化那么这意味着上面的行未能创建字典类型。 sysDictField 但是返回 typeId() 没有问题。

\Classes\SysTableRelation\getDictFieldID - line 7 上设置一个断点,看看问题出在哪里。我怀疑这只是环境问题,一些 compiles/restarts 会修复。

出现这个问题是因为方法\SysTableRelation\getDictFieldID使用了第dictType = new SysDictType (sysDictField.typeId ())行字段的EDT;

我通过在字段中添加 EDT 来修复。