![]() |
#7 |
Участник
|
Еще можно добавить в АОТ небольшой класс и использовать его при отладке:
X++: class ParmMethodViewer { Object object; Map parmMethodName2Value; } void initMap() { DictClass dictClass; int methodIdx; str methodName; Object parmObject; Common parmCommon; anytype parmPrimitive; Types type; ; parmMethodName2Value = new Map(Types::String, Types::String); dictClass = new DictClass(classidget(object)); for(methodIdx = 1; methodIdx <= dictClass.objectMethodCnt(); methodIdx++) { methodName = dictClass.objectMethod(methodIdx); if (!strStartsWith(methodName, 'parm')) { continue; } type = typeOf(dictClass.callObject(methodName, object)); switch (type) { case Types::Class: parmObject = dictClass.callObject(methodName, object); parmMethodName2Value.insert( methodName, classId2Name(classidget(parmObject))); break; case Types::Record: parmCommon = dictClass.callObject(methodName, object); parmMethodName2Value.insert( methodName, strFmt('Table %1, RecId %2', tableid2name(parmCommon.TableId), parmCommon.RecId)); break; case Types::String, Types::Date, Types::Guid, Types::Int64, Types::Integer, Types::Real, Types::Time, Types::UtcDateTime: parmPrimitive = dictClass.callObject(methodName, object); parmMethodName2Value.insert( methodName, strFmt('%1', parmPrimitive)); break; } } } void new(Object _object) { ; object = _object; this.initMap(); } X++: public static void main(Args _args) { Args args; InventTable inventTable; ParmMethodViewer parmMethodViewer; ; args = new Args(); args.parm('qwerty'); args.parmEnumType(enumnum(NoYes)); args.parmObject(new SalesFormLetter_Invoice()); parmMethodViewer = new ParmMethodViewer(args); breakpoint; select firstonly inventTable; parmMethodViewer = new ParmMethodViewer(AxInventTable::newInventTable(inventTable)); breakpoint; } На второй: ["parmAltConfigId"->"","parmAltInventColorId"->"","parmAltInventSizeId"->"","parmAltItemId"->"","parmAssetGroupId_RU"->"","parmAssetId_RU"->"","parmBatchNumGroupId"->"","parmBOMCalcGroupId"->"","parmBOMLevel"->"0","parmBOMUnitId"->"pcs", ... Но тут нужно быть уверенным, что все parm-методы объекта написаны по бест-практисам и ничего другого не делают. |
|
|
За это сообщение автора поблагодарили: Logger (3), dit31 (1). |
Теги |
ax2012 |
|
|