![]() |
#11 |
Участник
|
Запустил у себя сейчас такой джоб.
Для 26 тысяч клиентов он отработал примерно за 2 минуты (если убрать вывод в инфолог) Это для Аксапты версии 3.0 X++: static void sysDatabaseLogFieldChangedCustAxForum(Args _args) { CustTable custTable; SysDatabaseLog SysDatabaseLog; int i; container tmp; SysOperationProgress sysOperationProgress = new SysOperationProgress(1); int stepCount; int total; UserInfo UserInfo; ; select count(RecId) from custTable; total = custTable.RecId; sysOperationProgress.setTotal(total); while select custTable { stepCount ++; sysOperationProgress.setCount(stepCount); sysOperationProgress.setText(strFmt("%1 запись из %2", stepCount, total)); while select SysDatabaseLog order by createdDate, createdTime where SysDatabaseLog.LogRecId == custTable.RecId && SysDatabaseLog.table == custTable.TableId { if (typeOf(conpeek(SysDatabaseLog.Data, 1)) == Types::Container) { for ( i = 1; i <= conlen(SysDatabaseLog.data); i ++) { tmp = conpeek(SysDatabaseLog.Data, i ); if (fieldExt2Id(conpeek(tmp, 1)) == fieldnum(custTable, zResponsibleDivision)) { if(conpeek(tmp, 3) != conpeek(tmp, 2)) { select firstonly UserInfo where UserInfo.Id == SysDatabaseLog.createdBy; info(strfmt("%1 ~ %2 ~ %3 ~ %4 ~ %5", custTable.AccountNum, UserInfo.name, SysDatabaseLog.createdDate, conpeek(tmp, 3),conpeek(tmp, 2) )); } } } } } } }
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 13.01.2021 в 15:41. |
|
Теги |
aif, ax2012, change tracking, интеграция, как правильно |
|
|