-
Notifications
You must be signed in to change notification settings - Fork 1
Home
mazzy edited this page Dec 29, 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
- checkEnum
- checkEnumType
- checkFormDatasource
- chackParm
- checkRecord
- checkRecordExists
- checkRecordTableIds
Assert methods ничего не возвращают. Бросают исключение, если в аргументах не подходящие параметры. Статические методы.
- assertCallerFormName
- assertCallerType
- assertEnum
- assertEnumType
- assertFormDatasource
- assertParm
- assertRecord
- assertRecordExists
- assertRecordTableIds
Ensure methods возвращают исходный args, что позволяет записывать цепочку ensure методов при инициализации переменных. Бросают исключение, если в аргументах не подходящие параметры. Методы объекта.
- ensureCallerFormName
- ensureCallerType
- ensureEnum
- ensureEnumType
- ensureFormDatasource
- ensureParm
- ensureRecord
- ensureRecordExists
- ensureRecordTableIds
Стало:
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();
...