01.11.2017, 12:05 | #1 |
Участник
|
Отчет по истории изменения поля в журнале базы данных
Привет всем!
Есть ли у кого пример кода, как собрать, к примеру, всех клиентов, у которых изменялось определенное поле. Надо вытащить автора модификации, дату модификации, старое и новое значение поля. Версия Аксапты - любая (кроме АХ 7)
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 01.11.2017 в 12:08. |
|
01.11.2017, 14:00 | #2 |
Участник
|
На здоровье:
X++: static void tks_repPickingRoute_changeDocPackage_log(Args _args) { FromDate fromDate = 01\01\2015; ToDate toDate = 31\12\2018; FromDateTime fromDateTime = DateTimeUtil::newDateTime(fromDate , str2time('0:00')); ToDateTime toDateTime = DateTimeUtil::newDateTime(toDate , str2time('23:59:59')); // UserId userId = "rugry"; SysDataBaseLog dbLog; List list; ListEnumerator li; container c; FieldId fieldId; AnyType oldValue; AnyType newValue; WMSPickingRoute pickingRoute; ; info(strfmt("%1#%2#%3#%4#%5#%6#%7", "Заказ", "Отгрузочная накладная", "Автор", "Изменено на", "Изменено с", "Автор модификации", "Дата модификации")); while select dbLog order by createdDateTime where dbLog.table == tablenum(WMSPickingRoute) && dbLog.LogType == DatabaseLogType::Update // && dbLog.createdBy == userId && (dbLog.createdDateTime >= fromDateTime) && (dbLog.createdDateTime <= toDateTime) join pickingRoute where pickingRoute.RecId == dbLog.LogRecId { list = dbLog.getDataAslist(); li = list.getEnumerator(); while (li.moveNext()) { c = li.current(); fieldId = fieldExt2Id(conpeek(c,1)); if (fieldId == fieldnum(WMSPickingRoute, WMDDocPackageId)) { [fieldId, newValue, oldValue] = c; if (newValue != oldValue) { info(strfmt("%1#%2#%3#%4#%5#%6#%7", pickingRoute.transRefId, pickingRoute.pickingRouteID, UserInfoHelp::userName(pickingRoute.CreatedBy), newValue, oldValue, UserInfoHelp::userName(dbLog.CreatedBy), DateTimeUtil::date(DateTimeUtil::applyTimeZoneOffset(dbLog.createdDateTime, DateTimeUtil::getUserPreferredTimeZone())))); } } } } } |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2), Ace of Database (5), Lemming (5). |
Теги |
sysdatabaselog |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|