我需要帮助从产品表中获取与销售线相关的数据。 我的任务是获取与当前 salesid 相关的所有 Prodid。相关字段 prodtable.inventrefid == salesline.salesid。但加入的值有点不同,所以我没有得到任何数据。 Inventrefid 有例如。 ZPR0000011,销售 ID 为 ZS00000011。
salesline tablebuffer = this.cursor();
while select ProdId, CollectRefProdId from prodtable where prodtable.inventrefid == 'ZPR00000165'
我立即看到的主要问题是:
prodtable.inventrefid == 'ZPR00000165'
inventRefId
将是您的 SalesId
,这是 ZS00000011
不是您的 ProdId
。
下面是一个更正确的查询示例。您可以通过将两个选择连接在一起来优化它,以便获得给定
ProdTable
的所有相关 SalesLine
记录到 all
SalesId
记录,并且您还可以在查询中指定字段,这样您就不会返回整个缓冲液。
SalesLine salesLine;
ProdTable prodTable;
/*
This just chooses the first sales line with that salesid. You would need to join these together
if you wanted to do all sales lines in one query.
*/
select firstOnly salesLine
where salesLine.SalesStatus == SalesStatus::Backorder &&
salesLine.SalesId == 'ZS00000011';
while select prodTable
where prodTable.InventRefTransId == salesLine.InventTransId &&
prodTable.InventRefId == salesLine.SalesId &&
prodTable.InventRefType == InventRefType::Sales
{
info(strFmt("Found related ProdTable record %1 - %2 (%3)", prodTable.ProdId, prodTable.CollectRefProdId, prodTable.RecId));
}
抱歉跳到这里。我可以知道在哪里可以找到这个路径[\Data Dictionary\Tables\ProdTable\Relations\SalesOrder]吗?我对 D365 完全陌生,但因为我的公司在 D365 上创建了一个数据湖 1,没有任何数据字典或 ERD,这使我很难制作报告/仪表板。