Axapta InventJournalName中的standardJournalName方法

Axapta InventJournalName中的standardJournalName方法,axapta,dynamics-ax-2012,dynamics-ax-2012-r2,dynamics-ax-2012-r3,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。简而言之,第一个 通过调试器,

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

之所以有参数,是因为无论在
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
,但只有在主键上选择时才能从缓存中检索记录。

非常感谢,获得了它,并在库存管理>设置>库存和仓库管理参数中找到了设置这些参数的表单。