通过InventTable过滤引号

时间:2013-01-22 19:25:08

标签: dynamics-ax-2009

我正在尝试使用SalesQuotationLine表的主数据源在AX 2009(SP1,当前汇总6)中构建报表。由于我们的库存结构,我需要应用一个过滤器,只显示某些类别的项目(在这种情况下,是InventTable中定义的非服务项目)。但是,似乎SalesQuotationLine和InventTable之间的链接存在问题,因此只会显示两个特定项目。

我们也在销售报价详细信息屏幕上对此进行了测试,结果相同。执行如下查询:enter image description here

...仅显示具有前面提到的特定项目之一的引号。如果我们将Item Type更改为其他内容(例如更改为Item),则结果为空集。我们也在我们的一个辅助测试服务器上遇到了这个问题,对于所有意图都是新安装。

从一个表到另一个表的数据映射似乎没有任何问题,我们没有遇到任何其他表集的这个问题。这是一个真正的问题,还是我错过了一些东西?

1 个答案:

答案 0 :(得分:2)

在执行查询期间分析SQL Profile运行的结果后,似乎问题是系统错误。选择要加入SalesQuotationLines的表时,您有两个选项:“项目”和“项目(项目编号)”。无论您选择哪个表执行查询,它都会使用“SalesQuotationLines.ProjTransCode = InventTable.ItemId”关系连接InventTable。 在将表与系统中的其他层进行比较后,我发现从createLine方法中删除了以下代码块(在SYP层中):

if (this.ProjTransType == QuotationProjTransType::Item)
{
    this.ProjTransCode = this.ItemId;
}

由于不再填充ProjTransCode,因此除了在已填充ProjTransCode的某些引用行上之外,连接不起作用。

此外,没有与InventTable直接定义的关系 - 该链接仅通过SalesQuotationLine.ItemId字段上使用的扩展数据类型进行维护。手动添加此关系可以解决问题。