Вот так запихнуть всю историю в мапы, а потом мапы сопоставляеть между собой
X++:
Map mapCustTable = new Map(Types::String, Types::Container),
Map mapDIRPARTYLOCATION = new Map(Types::String, Types::Container),
Map mapLOGISTICSELECTRONICADDRESS = new Map(Types::String, Types::Container),
while select SysDatabaseLog order by createdDate, createdTime
where
SysDatabaseLog.table == tableNum(custTable)
|| SysDatabaseLog.table == tableNum(DIRPARTYLOCATION)
|| SysDatabaseLog.table == tableNum(LOGISTICSELECTRONICADDRESS)
{
switch(SysDatabaseLog.table)
{
case tableNum(custTable):
mapCustTable.insert(strfmt("%1_%2_%3", SysDatabaseLog.LogRecId, SysDatabaseLog.CreatedDate, SysDatabaseLog.CreatedTime), SysDatabaseLog.data);
break;
}
}