Skip to content
mazzy edited this page Jan 13, 2019 · 12 revisions

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

Get methods возвращают требуемое значение или бросают исключение

  • getCallerFormName
  • getEnum
  • getEnumDefault
  • getMarkedRecIds
  • getRecord

Check methods возвращают boolean, не бросают исключений

  • checkCallerType
  • checkEnumType
  • checkRecord
  • checkTable

Assert methods ничего не возвращают. Бросают исключение, если в аргументах не подходящие параметры.

  • assertCallerFormName
  • assertCallerType
  • assertEnumType
  • assertFormDatasource
  • assertRecord
  • assertTable

Пример 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.caller().args(), tablenum(ProdTable)) )
{
    ...

Вместо

callerForm = args.caller(); // нет проверки, что вызвали из формы
if (callerForm && callerForm.args() && callerForm.args().dataset() == tablenum(ProdTable) && callerForm.args().record().RecId)
{
    ...
Clone this wiki locally