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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.11.2011, 11:53   #1  
fatty_bu is offline
fatty_bu
Участник
Аватар для fatty_bu
 
90 / 18 (1) ++
Регистрация: 03.06.2009
Адрес: Москва
Таблица Аудита в БД
День добрый.

Необходимо разработать отчет в 2011 с отслеживанием изменения одного поля объекта.
Пытаюсь в БД найти таблицу аудита, но все концы ведут к AuditBase. Из этой таблицы невозможно вытащить наименование поля, какие изменения были сделаны (до/после), юрера изменяющего (только id).
Возможно есть другая таблица или какое-нить решение?
Старый 07.11.2011, 12:27   #2  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
ооооо таблица аудита это еще та жжжжжжжж я тоже писал отчет по аудиту в итоге получился километровый SQL запрос который парсит эту таблицу (инфа в ней хранится в ненормализованном виде - сделано для увеличения производительности)
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
За это сообщение автора поблагодарили: a33ik (0).
Старый 07.11.2011, 14:46   #3  
griefon is offline
griefon
Участник
 
131 / 52 (2) ++++
Регистрация: 07.12.2010
Адрес: down under
На форуме ms есть наплохой пост на эту тему:
http://social.microsoft.com/Forums/e...-9ca56a0c5aab/

Там все расписано, далее уже можно самостоятельно разобраться.
За это сообщение автора поблагодарили: a33ik (1).
Старый 07.11.2011, 16:57   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Добрый день. Сел посмотрел как в 2011 организован аудит - заикал, попил воды и написал следующий запрос, который демонстрирует как можно работать с аудитными данными. Возможно натолкнёт вас на мысль как вам удобнее сделать ваш отчёт:

Код:
Declare @attributes VarChar(Max), @values VarChar(Max), @ObjectTypeCode int, @LogDateTime DateTime, @RecordId uniqueidentifier, @UserId Uniqueidentifier, @ActionId int

Declare @Result Table(AttributeId int, Value VarChar(Max), ObjectTypeCode int, LogDateTime DateTime, RecordId uniqueidentifier, UserId uniqueidentifier, ActionId int)
Declare @CurrentAttribute VarChar(max), @CurrentValue VarChar(Max)

DECLARE DataAuditCursor CURSOR FOR 
Select 
	Case When IsNull(a.AttributeMask, '') = '' Then '' Else Substring(a.AttributeMask, 2, Len(a.AttributeMask) - 2) End
	,a.ChangeData
	,a.ObjectTypeCode
	,a.CreatedOn
	,a.ObjectId
	,a.UserId
	,a.[Action]
From Audit a
OPEN DataAuditCursor

FETCH NEXT FROM DataAuditCursor 
INTO @attributes, @values, @ObjectTypeCode, @LogDateTime, @RecordId, @UserId, @ActionId

WHILE @@FETCH_STATUS = 0
BEGIN
	WHILE CHARINDEX(',',@attributes,0) <> 0
	BEGIN
		SELECT
			@CurrentAttribute=RTRIM(LTRIM(SUBSTRING(@attributes,1,CHARINDEX(',',@attributes,0)-1))),
			@attributes=RTRIM(LTRIM(SUBSTRING(@attributes,CHARINDEX(',',@attributes,0)+1,LEN(@attributes)))),
			@CurrentValue=RTRIM(LTRIM(SUBSTRING(@values,1,CHARINDEX('~',@values,0)-1))),
			@values=RTRIM(LTRIM(SUBSTRING(@values,CHARINDEX('~',@values,0)+1,LEN(@values))))
	 
		IF LEN(@CurrentAttribute) > 0
			INSERT INTO @Result Values(CAST(@CurrentAttribute as int), @CurrentValue, @ObjectTypeCode, @LogDateTime, @RecordId, @UserId, @ActionId)
	END

	INSERT INTO @Result Values((Case When IsNull(@attributes, '') = '' Then Null Else CAST(@attributes as int) End), @values, @ObjectTypeCode, @LogDateTime, @RecordId, @UserId, @ActionId) 

	FETCH NEXT FROM DataAuditCursor 
	INTO @attributes, @values, @ObjectTypeCode, @LogDateTime, @RecordId, @UserId, @ActionId
END

CLOSE DataAuditCursor;
DEALLOCATE DataAuditCursor;
 
Select 
	(Select Top 1 Name From MetadataSchema.Entity e Where r.ObjectTypeCode = e.ObjectTypeCode) EntityName
	,(Select Top 1 a.Name From MetadataSchema.Attribute a 
	Inner Join MetadataSchema.Entity e On a.EntityId = e.EntityId and a.ColumnNumber = r.AttributeId and e.ObjectTypeCode = r.ObjectTypeCode) AttributeName
	,u.fullname UserName
	,r.Value OldFieldValue
	,r.RecordId ModifiedRecordId
From @Result r
	Left Join FilteredSystemUser u On r.UserId = u.systemuserid
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Bondonello (3).
Старый 07.11.2011, 18:39   #5  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Коллеги, сейчас нет доступа к системе. Догадки следующие:
1. Не могли бы вы глянуть в базу, возможно для вычисления всей этой жести есть готовые встроенные функции или процедуры?
2. Еще я бы попытался посмотреть профайлером, что запрашивает система при переходе на вкладку аудита - возможно это тоже как-то прояснит обрабатываются ли данные в SQL или уже в коде сервера.
3. Не обязательно использовать SQL, возможно это как раз тот случай, когда в отчете стоит обратиться к веб сервисам. В новой версии SSRS можно смешивать данные из разных датасетов, так что, думаю можно пойти и этим путем.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 07.11.2011, 19:42   #6  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
1. Не могли бы вы глянуть в базу, возможно для вычисления всей этой жести есть готовые встроенные функции или процедуры?
2. Еще я бы попытался посмотреть профайлером, что запрашивает система при переходе на вкладку аудита - возможно это тоже как-то прояснит обрабатываются ли данные в SQL или уже в коде сервера.
Обижаешь, старина, это первое что я посмотрел. Процедур/функций нет - всё разгребается на стороне приложения, а в базу идут прямые запросы.

Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
3. Не обязательно использовать SQL, возможно это как раз тот случай, когда в отчете стоит обратиться к веб сервисам. В новой версии SSRS можно смешивать данные из разных датасетов, так что, думаю можно пойти и этим путем.
Теоретически - можно, но с деплойментом этой красоты - намучаешься. Пробовал в одном проекте...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 08.11.2011, 00:01   #7  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Таки в чем проблема? Адрес приложения запарсить?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 08.11.2011, 10:01   #8  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Сегодня расскажу за рюмкой чая )
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Теги
audit, аудит, отчет, report, crm2011

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Сохранение параметров расширенного поиска в БД guenberg Dynamics CRM: Разработка 10 10.06.2010 17:41
Таблица зависимостей привелегий unpossible Dynamics CRM: Функционал 9 23.09.2009 11:41
Выбор записи из БД if_maks Dynamics CRM: Разработка 4 24.12.2008 12:11
Где в БД храняться настройки объектов? if_maks Dynamics CRM: Разработка 9 19.12.2008 15:42
Установка тестовой БД coshi Dynamics CRM: Администрирование 5 24.02.2005 15:04

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 09:34.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.