InventJournalName的standardJournalName方法

时间:2016-01-05 15:12:40

标签: axapta dynamics-ax-2012 dynamics-ax-2012-r2 dynamics-ax-2012-r3

在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;

1 个答案:

答案 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在主键上,则仅从缓存中检索记录。