|
13.01.2021, 16:45 | #1 |
Участник
|
Вот так запихнуть всю историю в мапы, а потом мапы сопоставляеть между собой
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; } }
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
13.01.2021, 16:50 | #2 |
Участник
|
Т.е. у вас будет 8 мапов.
Например, если в мапе mapLOGISTICSELECTRONICADDRESS изменилось нужное вам поле, то вы уже можете обычным для Аксапты способом через таблицу LOGISTICSELECTRONICADDRESS выйти на того клиента, и узнать его код. И даже сопоставлять между собой эти 8 мапов не надо.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
13.01.2021, 17:10 | #3 |
Участник
|
Вот как-то так:
X++: LogisticsElectronicAddress logisticsElectronicAddress; MapEnumerator me = new MapEnumerator(mapLogisticsElectronicAddress); CustTable custTable; RefRecId refRecId; while (me && me.moveNext()) { refRecId = str2Int64(conPeek(str2Con_RU(me.currentKey(), "_"), 1)); logisticsElectronicAddress = LogisticsElectronicAddress::findRecId(refRecId); custTable = CustTable::findByPartyRecId(logisticsElectronicAddress .PrivateForParty); }
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 13.01.2021 в 17:13. |
|
Теги |
aif, ax2012, change tracking, интеграция, как правильно |
|
|