Ax2012 — Добавление номерной серии

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *