SMART TALKS
Dynamics AX 2009, 2012, Dynamics CRM ...
Performance Analyzer for Microsoft Dynamics (DynamicsPerf)
DynamicsPerf набор утилит для мониторинга семейства систем Dynamics (AX, NAV, CRM). Установили попробовали, делимся :)
class CMSalesOrderDataContract
{
SalesId salesId;
Qty maxQty;
Qty averageQty;
}
public SalesId parmSalesId(SalesId _salesId = salesId)
{
salesId = _salesId;
return salesId;
}
public Qty parmMaxQty(Qty _maxQty = maxQty)
{
maxQty = _maxQty;
return maxQty;
}
public Qty parmAverageQty(Qty _averageQty = averageQty)
{
averageQty = _averageQty;
return averageQty;
}
public void initFromSalesTable(SalesTable _salesTable)
{
SalesLine salesLine;
this.parmSalesId(_salesTable.SalesId);
select maxOf(SalesQty) from salesLine
where salesLine.SalesId == _salesTable.SalesId
;
this.parmMaxQty(salesLine.SalesQty);
select avg(SalesQty) from salesLine
where salesLine.SalesId == _salesTable.SalesId
;
this.parmAverageQty(salesLine.SalesQty);
}
public static CMSalesOrderDataContract construct()
{
return new CMSalesOrderDataContract();
}
class CMCollectInformation
{
List salesOrdersInfo;
}
init listpublic void new()
{
salesOrdersInfo = new List(Types::Class);
}
construct class on Server side.public server static CMCollectInformation construct()
{
return new CMCollectInformation();
}
public void collect()
{
SalesTable salesTable;
CMSalesOrderDataContract salesOrderDataContract;
while select salesTable
{
salesOrderDataContract = CMSalesOrderDataContract::construct();
salesOrderDataContract.initFromSalesTable(salesTable);
salesOrdersInfo.addEnd(salesOrderDataContract);
}
}
return information packed in a containerpublic container getPackedData()
{
return salesOrdersInfo.pack();
}
class CMPrintInformation
{
}
initialize class strong on CLIENT sidepublic client static CMPrintInformation construct()
{
return new CMPrintInformation();
}
public void printInfo()
{
CMCollectInformation collectInformation;
ListEnumerator le;
CMSalesOrderDataContract salesOrderDataContract;
List soClientInfoList;
// create and collect information n server side
collectInformation = CMCollectInformation::construct();
collectInformation.collect();
soClientInfoList = List::create(collectInformation.getPackedData());
le = soClientInfoList.getEnumerator();
while (le.moveNext())
{
salesOrderDataContract = le.current();
info(strFmt('SalesId %1, maxQty %2, averageQty %3', salesOrderDataContract.parmSalesId(), salesOrderDataContract.parmMaxQty(), salesOrderDataContract.parmAverageQty()));
}
}
static void Job3(Args _args)
{
CMPrintInformation printInformation = CMPrintInformation::construct();
printInformation.printInfo();
}
class CMSalesOrderDataContract implements SysPackable
{
SalesId salesId;
Qty maxQty;
Qty averageQty;
#define.CurrentVersion(1)
#localmacro.CurrentList
salesId,
maxQty,
averageQty
#endmacro
}
public container pack()
{
return [#CurrentVersion,#CurrentList];
}
public boolean unpack(container packedClass)
{
int version = runbase::getVersion(packedClass);
switch (version)
{
case #CurrentVersion:
[version,#CurrentList] = packedClass;
return true;
default :
return false;
}
return false;
}
public static CMSalesOrderDataContract create(container _packedClass)
{
CMSalesOrderDataContract salesOrderDataContract = CMSalesOrderDataContract::construct();
salesOrderDataContract.unpack(_packedClass);
return salesOrderDataContract;
}