Начинаю новую рубрику по 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(); }