Показать сообщение отдельно
Старый 08.01.2012, 02:29   #1  
Blog bot is offline
Blog bot
Участник
 
25,646 / 848 (80) +++++++
Регистрация: 28.10.2006
axforum blogs: Легкий тюнинг диаграмм - 04
Источник: http://axforum.info/forums/blog.php?b=306
==============

Строим диаграмму для связанных 1:N сущностей

Типичная задачка: требуется построить диаграмму, показывающую соотношение общего количества Организаций к Организациям, в отношении которых велись / ведутся Возможные сделки.
К сожалению, такой вид диаграммы в стандартном джентельменском наборе CRM отсутствует :( (понятно, что все остальные условия фильтрации: за период, по отделам, по регионам… можно возложить на кастомное представление Организаций).

Попробуем решить это задачку редактированием раздела определения диаграммы.
Логика наша будет выглядеть примерно следующим образом: нужно извлечь и подсчитать все Организации, параллельно построив запрос к связанным возможным сделкам (т.е. link entity и не забыть, чтобы запрос был “outer”!) и проведя второй подсчет Организаций, у которых есть возможные сделки. Опять же, группирование записей (group by) должно быть по тем параметрам, которые нас интересуют. Так как группирование и агрегирование (подсчет) будем выполнять внутри вложенного запроса, то и рассматривать поля группировки / агрегата нужно по отношению к Возможной сделке.
В самом простом случае (когда интересует только количество Организаций со сделками, без детализации состояния сделок) подойдет любое неиспользуемое поле в сущности Возможная сделка. Здесь фишка заключается в том, что это поле будет у всех сделок иметь одно и то же значение.
Я решил, что мне подойдет поле Приоритет (“prioritycode”). Если вы хотите детализировать состояние сделок по Организациям, используйте поле Состояние «statecode». Оно даст нам три дополнительных значения агрегата: Открыть, Потеряно и Реализовано.

Ну вот, хватит теории, переходим к практике.
Создаем кастомную круговую диаграмму Организации со сделками и без как показано на рис. ниже:

Сохраняем, экспортируем, отрываем в XML редакторе.
Находим раздел
Код:

Вставляем в этот раздел вложенный запрос от Организации к Возможным сделкам:



А теперь берем и переносим

Код:

Во вложенный запрос. Вот что должно получиться:
Код:

Наводим марафет.
Мы договорились, что считать будем по полю prioritycode. Поэтому меняем в группе attribute groupby значение поля name (теперь будет name=”prioritycode”).
Далее, так как агрегирование уже выполняется внутри вложенного запроса, то группа attribute aggregate должна ссылаться на существующее поле в сущности Возможная сделка. Так как поле name есть и в Организации, и в Возможной сделке, то все оставляем как есть.
Наводим лоск.
Поле prioritycode имеет одно значение, равное Значение по умолчанию. Которое и будет отображено на диаграмме. Как-то некрасиво. Поэтому лезем внутрь и меняем это значение на «Организации со сделками». Публикуемся, переходим на представление с Организациями и наслаждаемся :)

:)


Источник: http://axforum.info/forums/blog.php?b=306
__________________
Расскажите о новых и интересных блогах по Microsoft Dynamics, напишите личное сообщение администратору.