AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.12.2010, 09:46   #1  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
События Insert, Update, Delete у таблиц
Здравствуйте, уважаемые.

Есть задача отслеживать события Insert, Delete, Update у таблиц для выполнения определенных действий (скажем записи в лог) . Есть ли какой-либо системный класс, в который можно было добавить вызов метода класса записи в лог? Понимаю, что можно просто переопределить методы у нужных таблиц, и после вызова super(); совершать необходимые действия, однако, хотелось бы сделать более универсальный вариант.
Прошу не критиковать саму постановку задачи -- она "тестовая".

-------------
DAX 4.0
Старый 22.12.2010, 09:51   #2  
Daiver is offline
Daiver
Участник
Самостоятельные клиенты AX
 
177 / 44 (2) +++
Регистрация: 19.07.2005
Адрес: Москва
Функционал "Журнал базы данных" не подойдет?
Старый 22.12.2010, 09:56   #3  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от Daiver Посмотреть сообщение
Функционал "Журнал базы данных" не подойдет?
Задача "тестовая", и нужно сделать именно таким образом.
Модуль "Database Log" в системе отсутствует. Если, конечно, это имелось в виду.
Старый 22.12.2010, 10:01   #4  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Т.е. у вас отсутствуют следующие пункты меню?
Администрирование -> Запросы -> Журнал базы данных
Администрирование -> Отчеты -> Журнал базы данных
Администрирование -> Настройки -> Журнал базы данных
__________________
С уважением, Александр.
Старый 22.12.2010, 10:04   #5  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от samolalex Посмотреть сообщение
Т.е. у вас отсутствуют следующие пункты меню?
Администрирование -> Запросы -> Журнал базы данных
Администрирование -> Отчеты -> Журнал базы данных
Администрирование -> Настройки -> Журнал базы данных
Подтверждаю. Нет таких пунктов меню.
Старый 22.12.2010, 10:16   #6  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
Скорее всего, вы уже читали эту тему: Один из подходов к анализу движения данных в AXAPTA. Но если вдруг еще нет, может здесь будет что-то полезное.

Кусок из сообщения приведенной темы:

Отследить какие таблицы модифицируются, трассировкой обращений к БД:

Использовать возможность AXAPTA меню Сервис->Параметры вкладка Разработка, поставить галочку в Мониторинг – Запросов к базе данных. После этого произвести необходимую операцию, затем отключить мониторинг. Теперь в окне сообщений есть последовательность обращений к Базе Данных (таблица.операция()). Очень полезная функция перед мониторингом – очистить окно сообщений (меню Команда->Очистить).

Теперь можно определить какие таблицы изменялись, просто выписать таблицы с командами update, delete, insert …
__________________
С уважением, Александр.
За это сообщение автора поблагодарили: Prophetic (1).
Старый 22.12.2010, 10:25   #7  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Если честно, не знаю как в AX 4.0 , но вроде там есть механизм оповещений, как в AX 2009, поэтому должно быть все одинаково. Если так, то можно использовать класс Application и 4 его метода: eventDelete, eventInsert, eventRenameKey и eventUpdate.
Эти методы вызываются ядром при соответствующих действиях с таблицами.
За это сообщение автора поблагодарили: S.Kuskov (3), Prophetic (1).
Старый 22.12.2010, 10:37   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Prophetic Посмотреть сообщение
Понимаю, что можно просто переопределить методы у нужных таблиц, и после вызова super(); совершать необходимые действия
Не забывайте, что некоторые изменения данных могут проходить в обход перекрытых тригеров на таблице, как в прочем и в обход функционала "Database Log". Я имею в виду методы doDelete/doUpdate/doDelete и skipDataMethods/skipDeleteMethod/skipDatabaseLog.
За это сообщение автора поблагодарили: Prophetic (1).
Старый 22.12.2010, 10:49   #9  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от samolalex Посмотреть сообщение
Скорее всего, вы уже читали эту тему: Один из подходов к анализу движения данных в AXAPTA. Но если вдруг еще нет, может здесь будет что-то полезное.

Кусок из сообщения приведенной темы:

Отследить какие таблицы модифицируются, трассировкой обращений к БД:

Использовать возможность AXAPTA меню Сервис->Параметры вкладка Разработка, поставить галочку в Мониторинг – Запросов к базе данных. После этого произвести необходимую операцию, затем отключить мониторинг. Теперь в окне сообщений есть последовательность обращений к Базе Данных (таблица.операция()). Очень полезная функция перед мониторингом – очистить окно сообщений (меню Команда->Очистить).

Теперь можно определить какие таблицы изменялись, просто выписать таблицы с командами update, delete, insert …
Да, читал, благодарю. Это один из вариантов решения.
Старый 22.12.2010, 11:18   #10  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от Prophetic Посмотреть сообщение
Подтверждаю. Нет таких пунктов меню.
А у вас случайно не лицензии по переходу с 3.0? Если да, то может попробовать его получить (кстати, при этом и Оповещений может не быть) от MS?

В новой 4.0 эта функциональность доступна бесплатно.
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: Prophetic (1).
Старый 22.12.2010, 11:18   #11  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от jonny Посмотреть сообщение
Если честно, не знаю как в AX 4.0 , но вроде там есть механизм оповещений, как в AX 2009, поэтому должно быть все одинаково. Если так, то можно использовать класс Application и 4 его метода: eventDelete, eventInsert, eventRenameKey и eventUpdate.
Эти методы вызываются ядром при соответствующих действиях с таблицами.
Благодарю, именно это мне и нужно было.
Добавлю от себя, что далее в этих методах вызывается createEventCUD(), который как раз делает необходимые мне действия.
Старый 22.12.2010, 11:20   #12  
Prophetic is offline
Prophetic
Участник
 
113 / 15 (1) ++
Регистрация: 08.12.2009
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
А у вас случайно не лицензии по переходу с 3.0? Если да, то может попробовать его получить (кстати, при этом и Оповещений может не быть) от MS?

В новой 4.0 эта функциональность доступна бесплатно.
Совершенно верно, был переход с 3.0. Делал не я, происходило достаточно давно, с поддержки компания ушла. Даже не знаю, насколько возможно это сделать.
Старый 22.12.2010, 11:26   #13  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Без поддержки - никак Если есть оповещения - используйте их. Они работают на том же алгоритме, что и журнал БД.
__________________
Ivanhoe as is..
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
В AX2009 не вызываются методы insert/update/delete временной таблицы S.Kuskov DAX: Программирование 14 24.06.2011 19:24
fatihdemirci: Axapta’dan direk SQL Insert, Update ve Delete işlemleri Blog bot DAX Blogs 0 17.09.2010 20:05
AIF: проблема с update() и delete() Delfins DAX: Программирование 3 13.11.2009 02:41
gatesasbait: Table caching and record delete()/update()/next Blog bot DAX Blogs 3 24.04.2008 22:55
Отображение связных таблиц. Сплиттер. Автоувеличение индекса. Delete Action. sguryev DAX: База знаний и проекты 0 14.12.2001 06:15

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:28.