来自 InventJournalName 的 standardJournalName 方法

standardJournalName method from InventJournalName

在 InventJournalName table 中有 JournalNameId 列和 JournalType。

使用:

InventJournalNameId inventJournalName;

inventJournalName = InventJournalName::standardJournalName(InventJournalType::Movement);

我确实能够从 InventJournalName table 获得类型为 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的作用是什么table。

很明显:

select firstonly parameter
   index Key
   where parameter.Key == 0;

会 return 我需要什么,但幕后的机制是什么?

以上方式和:

有什么区别吗
select firstOnly inventJournalName
where inventJournalName.JournalType ==
InventJournalType::Movement;

你有一个参数的原因是你应该能够定义一个标准的期刊名称,而不管你在 InventJournalName table.

中有多少期刊名称

对于同一期刊类型,您可以在 table 中使用多个期刊名称,只要它们的名称不同即可。

如果您有 2 个名称类型的移动此代码

select firstOnly inventJournalName
where inventJournalName.JournalType ==
InventJournalType::Movement;

基本上 return 一个随机记录(如果没有顺序,则不能保证哪个会是第一个)。

另一方面

select firstonly parameter
   index Key
   where parameter.Key == 0;

将 return 你的参数 table 中的内容是确定性的。

如果您想知道 where parameter.key == 0 的用途。那是因为 AX 的缓存机制是如何工作的。所有参数 table 都设置为 entiretablecache=yes,但如果 select 在主键上,则仅从缓存中检索记录。