Helper methods for SysArgs class in Microsoft Dynamics AX (Axapta)
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
ax2009
ax2012
ax4
.gitattributes
.gitignore
CHANGELOG.md
LICENSE
README.md
build.ps1

README.md

SysArgs

SysArgs – это набор методов на языке X++ для класса SysArgs в Microsoft Dynamics AX 2009, Microsoft Dynamics AX 2012 и Axapta 4.0.

  • Get методы возвращают требуемое значение или бросают исключение
  • Check методы возвращают boolean, не бросают исключений
  • Assert методы ничего не возвращают. Бросают исключение, если args не инициализирован или в аргументах не подходящие параметры. Статические методы.
  • Ensure методы возвращают исходный args. Бросают исключение, если в аргументах не подходящие параметры. Методы объекта. Особенно удобны в ax2012 при инициализации переменных.

Подробнее в wiki проекта.

Пример 1

Стало:

reqTrans = SysArgs::getRecord(args, reqTrans.TableId);

Вместо:

if (args.dataset() == tablenum(ReqTrans) && args.record().RecId)
    reqTrans = args.record();
else
    throw error(Error::missingFormActiveBuffer(element.name()));

Пример 2

Стало:

SysArgs::assertCallerType(args, classnum(FormRun)); // пропустит дальше, только если вызвали из формы. Иначе бросит исключение.
if( SysArgs::checkRecord(args, tablenum(ProdTable)) )
{
    ...

Вместо:

if (args && args.caller() && args.dataset() == tablenum(ProdTable) && args.record().RecId)
{
    // проверили, что есть вызвавший класс. нет проверки, что вызвали именно из формы
    ...

Пример 3 для ax2012

Стало:

public static void main(Args args)
{
    ProdTable prod = args.ensureCallerType(classnum(FormRun)).getRecord(tablenum(ProdTable));
    ...

Вместо:

public static void main(Args args)
{
    ProdTable prod;

    if (args && args.caller() && args.dataset() == tablenum(ProdTable) && args.record().RecId)
    {
        prod = callerForm.args().record();
        ...

Благодарности

Спасибо Роману Долгополову (RDOL, db), его код лежит в основе данного проекта.

ChangeLog

Помощь проекту

Буду признателен за ваши замечания, предложения и советы по проекту как в разделе Issues, так и в виде письма на адрес mazzy@mazzy.ru

Мазуркин Сергей (mazzy)