![]() |
#1 |
Участник
|
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, напишите личное сообщение администратору. |
|