-
Notifications
You must be signed in to change notification settings - Fork 1
Home
mazzy edited this page Jan 17, 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
- checkRecordExists
Assert methods ничего не возвращают. Бросают исключение, если в аргументах не подходящие параметры. Статические методы.
- assertCallerFormName
- assertCallerType
- assertEnumType
- assertFormDatasource
- assertRecord
- assertRecordExists
Ensure methods возвращают сам args, что позволяет записывать цепочку ensure методов при инициализации переменных. Бросают исключение, если в аргументах не подходящие параметры. Методы объекта.
- ensureCallerFormName
- ensureCallerType
- ensureEnumType
- ensureFormDatasource
- ensureRecord
- ensureRecordExists
reqTrans = SysArgs::getRecord(args, reqTrans.TableId);
if (args.dataset() == tablenum(ReqTrans) && args.record().RecId)
reqTrans = args.record();
else
throw error(Error::missingFormActiveBuffer(element.name()));
SysArgs::assertCallerType(args, classnum(FormRun)); // пропустит дальше, только если вызвали из формы. Иначе бросит исключение.
if( SysArgs::checkRecord(args, tablenum(ProdTable)) )
{
...
if (args && args.caller() && args.dataset() == tablenum(ProdTable) && args.record().RecId)
{
// проверили, что есть вызвавший класс. нет проверки, что вызвали именно из формы
...
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();
...