在InventJournalName表中,有JournalNameId列和JournalType。
使用:
InventJournalNameId inventJournalName;
inventJournalName = InventJournalName::standardJournalName(InventJournalType::Movement);
我确实能够从InventJournalName表中获取Movement类型的JournalNameId。更简洁,第一个。
使用调试器我达到了这一点:
public static InventParameters find(boolean _forupdate = false)
{
InventParameters parameter;
if (_forupdate)
{
parameter.selectForUpdate(_forupdate);
}
select firstonly parameter
index Key
where parameter.Key == 0;
if (!parameter && !parameter.isTmp())
{
Company::createParameter(parameter);
PrintMgmt::createDefaultData(PrintMgmtHierarchyType::Invent);
}
return parameter;
}
说实话,我真的不明白InventParameters表的作用是什么。
很清楚:
select firstonly parameter
index Key
where parameter.Key == 0;
将返回我需要的内容,但幕后的机制是什么?
上述方式与之间有什么区别:
select firstOnly inventJournalName
where inventJournalName.JournalType ==
InventJournalType::Movement;
答案 0 :(得分:3)
您有参数的原因是因为无论您在InventJournalName
表中有多少个期刊名称,都应该能够定义标准期刊名称。
您可以在该表中为同一日记帐类型设置多个日记帐名称,只要它们的名称不同。
如果您有2个类型名称移动此代码
select firstOnly inventJournalName
where inventJournalName.JournalType ==
InventJournalType::Movement;
基本上会返回一个随机记录(如果没有订单,则不保证首先是这样的。)
另一方面
select firstonly parameter
index Key
where parameter.Key == 0;
将返回参数表中的内容并且是确定性的。
如果您想知道where parameter.key == 0
的原因。这是因为AX的缓存机制如何工作。所有参数表都设置为entiretablecache=yes
,但如果select在主键上,则仅从缓存中检索记录。