Создание отчетов для Microsoft Dynamics CRM
Добрый день, коллеги!
Я никогда не скрывал, что одной из возможностей Microsoft Dynamics CRM 3.0, которые произвели на меня наиболее сильное впечатление, является новая подсистема отчетов, основанная на SQL Server Reporting Services. Надеюсь, вы читали статью на сайте сообщества Microsoft Dynamics, в которой рассказывалось, как за 15 минут создать отчет, отформатировать его и загрузить в Microsoft Dynamics CRM. Сегодня мы посмотрим на то, как можно реализовать такие функции, как drill-down и форматирование отчета в зависимости от каких-либо условий.
Итак, мы хотим создать отчет, который отображает все организации и все возможные сделки, связанные с этими организациями, а также, предполагаемый доход по этим сделкам. Открываем Visual Studio (я буду использовать VS .NET 2005), создаем новый проект и в качестве типа проекта выбираем Report Server Project Wizard. Теперь вводим название проекта и нажимаем кнопку Ок. Запускается мастер, с помощью которого мы очень быстро подготовим основу нашего отчета. На странице Select Data Soure мы нажимаем кнопку Edit и указываем строку подключения к нашему источнику данных (имя сервера – localhost, windows authentication, база данных – Contoso_MSCRM). В следующем окне вводим текст самого запроса:
USE Contoso_MSCRM
SELECT
CAST ( CRMAF_Account.accountid AS Varchar ( 36 ) ) AS AccountId ,
CRMAF_Account.name AS AccountName ,
CAST ( CRMAF_Opportunity.opportunityid AS Varchar ( 36 ) ) AS OpportunityId ,
CRMAF_Opportunity.name AS OpportunityName ,
CRMAF_Opportunity.estimatedvalue AS EstimatedValue
FROM
FilteredAccount AS CRMAF_Account,
FilteredOpportunity AS CRMAF_Opportunity
WHERE
CRMAF_Opportunity.accountid = CRMAF_Account.accountid
После того, как мы ввели текст запроса и выбрали табличное представление отчета, нам надо сгруппировать наши поля. Здесь все просто – мы хотим группировать данные по названию организаций. Соответственно, переносим AccountName в раздел Group, а элементы OpportunityName и EstimatedValue – в раздел Details. Выбираем корпоративный стиль отчета, оставляя все остальные параметры без изменения и, нажав на кнопку Finish, мы получаем основу нашего отчета, которую мы должны отредактировать, чтобы все стало красиво и удобно.
Во-первых, мы должны переименовать названия отчета и полей. Это просто – надо нажать левой кнопкой мыши на соответствующей ячейки и ввести нужный текст. Например, название отчета – Сводка потенциальных продаж по клиентам, а названия полей – Клиент, Потенциальная продажа и Предполагаемый доход.
Теперь, необходимо провести форматирование нашего отчета следующим образом: во-первых, мы хотим, чтобы доход отображался в виде чисел с двумя знаками после точки и со знаком $; во-вторых - чтобы значения предполагаемого дохода свыше 30000 отображались красным цветом. Как это реализовать? Открываем свойства ячейки с предполагаемым доходом. Теперь, переходим на закладку Format и выберем значение C (Currency) для параметра Format code. С форматированием разобрались. Осталось изменить цвет ячеек. Для этого воспользуемся функцией IIF. Опять выделяем ячейку с предполагаемым доходом. В окне Properties перечисляются различные параметры данной ячейки, среди которых есть параметр Color. Щелкаем кнопку для открытия выпадающего списка значений и выбираем пункт Expression. Вводим следующую функцию =IIf(Fields!EstimatedValue.Value>30000,"Red","Black")
И теперь нам осталось самое простое J - реализовать drill-down, т.е., вставить в отчет возможность щелкнуть курсором на возможной сделки, открыть учетную карточку этой сделки из Microsoft Dynamics CRM. Для начала, нам необходимо создать специальный параметр, который мы будем использовать. Открываем пукнт меню Report -> Report Parameters. Задаем название для нового параметра – CRM_URL, определяем его значение по умолчанию =https://localhost:5555/CRMReports/Viewer/drillopen.aspx. В этом параметре мы задаем адрес, с помощью которого можно отображать объекты Microsoft Dynamics CRM, если передать ему тип объекта и GUID этого объекта. Теперь открываем свойства ячейки, отображающей название потенциальной продажи и переходим на закладку Navigation. И что мы здесь видим? Пункт JumptoURL. Осталось немного – правильно сформировать строку. Здесь нам опять помогает функция IIF. Вводим значение =IIF(IsNothing(Parameters!CRM_URL.Value),0,Parameters!CRM_URL.Value & "?ID={"&Fields!OpportunityId.Value.ToString()&"}&OTC=3")
Теперь, проверяем работу отчета с помощью закладки Preview. Работает? Отлично, теперь сохраняем файл отчета в доступном нам месте, открываем Microsoft Dynamics CRM и помещаем созданный отчет в наше хранилище отчетов. Работает!!!