Начинаю новую рубрику по ERP системе Microsoft Dynamicx AX, где буду делиться своими наработками и шпаргалками, которые всегда под рукой.
В Microsoft Dynamicx AX 2012 немного изменился процесс добавления номерной серии. Предлагаю небольшую шпаргалку.
В этот статья показано как добавить номерную серию в Microsoft Dynamics AX 2012. В качестве примера выбран базовый класс NumberSeqModuleGeneral.
Предположим, что в некотором профайлере требуется нумерация сессий с помощью номерной серии. Расширенный тип данных ProfilerId_NSY используется в качестве кода сессии профайлера.
1. В таблице CompanyInfo необходимо создать метод numRefProfilerId_NSY():
public static client server NumberSequenceReference numRefProfilerId_NSY()
{
return NumberSeqReference::findReference(extendedTypeNum(ProfilerId_NSY));
}
2. В метод loadModule() класса NumberSeqModuleGeneral добавить следующий код:
protected void loadModule()
{
NumberSeqDatatype datatype = NumberSeqDatatype::construct();
.......
.......
// Neosy_Profiler_NSY, Neosy, 03.04.19 -->
// Код сессии профайлера
datatype.parmDatatypeId(extendedtypenum(ProfilerId_NSY));
datatype.parmReferenceLabel(literalstr("Код сессии профайлера"));
datatype.parmReferenceHelp(literalstr("Порядковый номер сессии профайлера (время выполнения кода)"));
datatype.parmWizardIsContinuous(false);
datatype.parmWizardIsManual(NoYes::No);
datatype.parmWizardIsChangeDownAllowed(NoYes::No);
datatype.parmWizardIsChangeUpAllowed(NoYes::No);
datatype.parmWizardHighest(999999);
datatype.parmSortField(100); // Порядковый номер, который больше предыдущей номерной серии
datatype.addParameterType(NumberSeqParameterType::DataArea, true, false);
this.create(datatype);
// Neosy_Profiler_NSY, Neosy, 03.04.19 <--
}
3. Чтобы номерная серия появилась в параметрах необходимо написать и запустить следующий Job:
static void NumberSeqReInit_NSY(Args _args)
{
NumberSeqApplicationModule numberSeqModule = new NumberSeqModuleMDM(); // это класс, обслуживающий ваш модуль
NumberSeqGlobal numberSeqGlobal = appl.numberSeqGlobal();
;
numberSeqModule.load();
SysGlobalObjectCache::clearAllCaches();
numberSeqGlobal.buildModulesMap();
}
Для полной загрузки всех номерных серий в таблицу NumberSequenceDatatype необходимо запустить Job:
static void NumberSeqReInitAll_NSY(Args _args)
{
;
NumberSeqApplicationModule::loadall();
SysGlobalObjectCache::clearAllCaches();
appl.numberSeqGlobal().buildModulesMap();
}