22.12.2010, 09:46 | #1 |
Участник
|
События Insert, Update, Delete у таблиц
Здравствуйте, уважаемые.
Есть задача отслеживать события Insert, Delete, Update у таблиц для выполнения определенных действий (скажем записи в лог) . Есть ли какой-либо системный класс, в который можно было добавить вызов метода класса записи в лог? Понимаю, что можно просто переопределить методы у нужных таблиц, и после вызова super(); совершать необходимые действия, однако, хотелось бы сделать более универсальный вариант. Прошу не критиковать саму постановку задачи -- она "тестовая". ------------- DAX 4.0 |
|
22.12.2010, 09:51 | #2 |
Участник
|
Функционал "Журнал базы данных" не подойдет?
|
|
22.12.2010, 09:56 | #3 |
Участник
|
|
|
22.12.2010, 10:01 | #4 |
Участник
|
Т.е. у вас отсутствуют следующие пункты меню?
Администрирование -> Запросы -> Журнал базы данных Администрирование -> Отчеты -> Журнал базы данных Администрирование -> Настройки -> Журнал базы данных
__________________
С уважением, Александр. |
|
22.12.2010, 10:04 | #5 |
Участник
|
|
|
22.12.2010, 10:16 | #6 |
Участник
|
Скорее всего, вы уже читали эту тему: Один из подходов к анализу движения данных в AXAPTA. Но если вдруг еще нет, может здесь будет что-то полезное.
Кусок из сообщения приведенной темы: Отследить какие таблицы модифицируются, трассировкой обращений к БД: Использовать возможность AXAPTA меню Сервис->Параметры вкладка Разработка, поставить галочку в Мониторинг – Запросов к базе данных. После этого произвести необходимую операцию, затем отключить мониторинг. Теперь в окне сообщений есть последовательность обращений к Базе Данных (таблица.операция()). Очень полезная функция перед мониторингом – очистить окно сообщений (меню Команда->Очистить). Теперь можно определить какие таблицы изменялись, просто выписать таблицы с командами update, delete, insert …
__________________
С уважением, Александр. |
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
22.12.2010, 10:25 | #7 |
Участник
|
Если честно, не знаю как в AX 4.0 , но вроде там есть механизм оповещений, как в AX 2009, поэтому должно быть все одинаково. Если так, то можно использовать класс Application и 4 его метода: eventDelete, eventInsert, eventRenameKey и eventUpdate.
Эти методы вызываются ядром при соответствующих действиях с таблицами. |
|
|
За это сообщение автора поблагодарили: S.Kuskov (3), Prophetic (1). |
22.12.2010, 10:37 | #8 |
Участник
|
Не забывайте, что некоторые изменения данных могут проходить в обход перекрытых тригеров на таблице, как в прочем и в обход функционала "Database Log". Я имею в виду методы doDelete/doUpdate/doDelete и skipDataMethods/skipDeleteMethod/skipDatabaseLog.
|
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
22.12.2010, 10:49 | #9 |
Участник
|
Цитата:
Сообщение от samolalex
Скорее всего, вы уже читали эту тему: Один из подходов к анализу движения данных в AXAPTA. Но если вдруг еще нет, может здесь будет что-то полезное.
Кусок из сообщения приведенной темы: Отследить какие таблицы модифицируются, трассировкой обращений к БД: Использовать возможность AXAPTA меню Сервис->Параметры вкладка Разработка, поставить галочку в Мониторинг – Запросов к базе данных. После этого произвести необходимую операцию, затем отключить мониторинг. Теперь в окне сообщений есть последовательность обращений к Базе Данных (таблица.операция()). Очень полезная функция перед мониторингом – очистить окно сообщений (меню Команда->Очистить). Теперь можно определить какие таблицы изменялись, просто выписать таблицы с командами update, delete, insert … |
|
22.12.2010, 11:18 | #10 |
Участник
|
А у вас случайно не лицензии по переходу с 3.0? Если да, то может попробовать его получить (кстати, при этом и Оповещений может не быть) от MS?
В новой 4.0 эта функциональность доступна бесплатно.
__________________
Ivanhoe as is.. |
|
|
За это сообщение автора поблагодарили: Prophetic (1). |
22.12.2010, 11:18 | #11 |
Участник
|
Цитата:
Сообщение от jonny
Если честно, не знаю как в AX 4.0 , но вроде там есть механизм оповещений, как в AX 2009, поэтому должно быть все одинаково. Если так, то можно использовать класс Application и 4 его метода: eventDelete, eventInsert, eventRenameKey и eventUpdate.
Эти методы вызываются ядром при соответствующих действиях с таблицами. Добавлю от себя, что далее в этих методах вызывается createEventCUD(), который как раз делает необходимые мне действия. |
|
22.12.2010, 11:20 | #12 |
Участник
|
Совершенно верно, был переход с 3.0. Делал не я, происходило достаточно давно, с поддержки компания ушла. Даже не знаю, насколько возможно это сделать.
|
|
22.12.2010, 11:26 | #13 |
Участник
|
Без поддержки - никак Если есть оповещения - используйте их. Они работают на том же алгоритме, что и журнал БД.
__________________
Ivanhoe as is.. |
|
|
|