Отчеты
18
Апр
25

Создание отчета для MS CRM

Как Вы знаете (или не знаете), в MS CRM есть два способа создавать отчеты. Первый это через интерфейс самой CRM, а второй через инструментальные средства разработки, такие как Visual Studio и Report Builder (входит в комплект SQL Server’а). Первый способ довольно ограничен в возможностях отбора данных и визуального представления. Поэтому на нем мы зацикливаться не будем, и рассмотрим сразу второй способ, а в качестве инструмента выберем Microsoft Visual Studio 2005.

Для начала создайте некоторое количество тестовых данных: несколько организаций и еще больше контактов. И обязательно прицепите эти контакты к организациям!

Приступим:

  1. Откройте Visual Studio 2005. File — New — Project;
  2. В области Project Types выделите Business Intelligence Project, а в области Templates выберите Report Server Project Wizard. В нижней части окна задайте по своему усмотрению местоположение исходных файлов и имя для нового проекта. ОК;


Возможность создавать проекты отчетов будет доступна только если установлен компонент SLQ Server’а Development Tools. Если он не установлен — доустановите его.


Появится помощник создания отчетов. Первым делом нужно задать параметры подключения к базе данных:

  1. Введите имя для нового источника данных и тип сервера к которому будем подключаться (в нашем случаи конечно же Microsoft SQL Server);
  2. Нажмите кнопку Edit. Появится окно свойств подключения: в списке Server Name выберите SQL сервер на котором у Вас расположена БД CRM. Способом аутентификации оставьте значение по умолчанию (Windows Authentication – надеюсь у Вас нет никаких проблем с доступом к БД 🙂 я то провожу эксперимент на самом сервере под учеткой админа, поэтому мне в любом случаи удастся соединиться :). В списке баз данных выберите основную БД MS CRM системы — <название_организации>_MSCRM. ОК;
  3. Жмем Next и тут нам нужно ввести SQL запрос, который вернет нам некоторые данные, в свою очередь на основе которых Report Server будет строить отчет. Вы можете нажать кнопочку Query Builder и воспользоваться помощником построения запросов, но т.к. наш запрос слишком просто, а описание возможностей помощника довольно объемное, то просто введите в поле Query String следующий SQL скрипт:
    select
    	accountidname as 'Организация',
    	fullname as 'ФИО',
    	address1_city as 'Город',
    	emailaddress1 as 'Электропочта'
    from
    	FilteredContact
    

    … и Next;


Хочу отметить , что табличка FilteredContact, откуда мы выбираем данные, это не просто табличка а вьюха (views). Вьюхи представляют собой виртуальные таблицы, которые создаются оператором SELECT и содержат некоторые отфильтрованные определенным образом данные из других таблиц.

  1. В качестве типа отчеты у будет Tabular, Next;
  2. В следующим окне надо указать параметры группировки данных. В нашем примере будем отчет будет выглядеть следующим образом: сначала будет идти название организации а под ней все связанные с ней контакты — и так для всех организаций у которых есть хоть один контакт. Поэтому поле Организация помещаем в область Group, а ФИО, Город и Электропочта в область Details. Next;
  3. В окне Table Layout нужно выбрать наличие и расположение некоторых элементов отчета. Но нам сейчас эти параметры не понадобятся, поэтому Next;
  4. Выберите визуальный стиль отчета – на свой вкус 🙂
  5. Далее нужно указать сервер отчетов и папку (виртуальную) на этом сервере, где будет храниться отчет. По умолчанию тут все должно нас устраивать – жмите Next;
  6. Работа помощника в целом завершена, смотрим итоговые данные и Finish;



  1. Помощник закроется и откроется основное окно Visual Studio на вкладке Layout (где отображаются и редактируются элементы отчета). Перейдите на вкладку Preview и полюбуйтесь как будет выглядеть отчет в CRM 🙂
  2. Убедитесь, что справа, в разделе Solution Explorer, выделен файл отчета (расширение rdl). Перейдите File — Save <отчет> As и сохраните куда-нибудь rdl файл.


Ну, вроде бы все готово для того, чтобы опубликовать наш отчет в CRM:

  • Откройте CRM. В рабочей области щелкните по Отчеты, далее Создать;
  • Откроется форма создания нового отчета. В качестве типа отчета укажите Существующий файл, а в поле ниже укажите путь к тому файлу rdl, который мы создали в предыдущих пунктах. Задайте любое имя для нового отчета. Сохраняйте и закрывайте окно;
  • Все готово к запуску 🙂 Дважды щелкните по имени созданного отчета. Отчет готов! 🙂


Комментарии (25)
  • Катя 18.04.2009

    Добрый день,

    У меня стоит 2008 Visual не могли подправить этот пост по 2008 пожалуйста, а то и и не смогла понять.

  • slivka_83 18.04.2009

    На этой неделе планирую написать статью, как выводит в отчеты изображения (помимо текстовой информации). Она будет на VS2008. Так что если подождете чуть-чуть… 🙂

  • slivka_83 18.04.2009

    Вот написал для VS 2008: http://mmcrm.ru/?p=932

  • real life 18.04.2009

    а можно это все подредактировать под vs 2010

  • slivka_83 18.04.2009

    Не уверен… для написания отчетов под SQL Reporting Services 2005 нужен обязательно VS 2005, для SQL Reporting Services 2008 нужен VS 2008. А вот будут ли компоненты разработки SQL Reporting Services 2008 работать на VS 2010 не знаю.. не пробовал 🙂

  • Ann 18.04.2009

    А как добавить параметры в репорт, чтобы пользователь crm мог задать значения?

  • slivka_83 18.04.2009

    Вот так: http://mmcrm.ru/?p=539

  • oikcom 18.04.2009

    Добрый день.
    Подскажите пожалуйста. В во всех действиях, есть кастомное поле лукап, к контакту, т.е. дополнительный контакт, когда я пытаюсь вывести все действия связанные с этим контактом, получается следующая ситуация,

    select something
    FROM FilteredContact AS CRMAF_contact INNER JOIN
    FilteredFax ON FilteredFax.new_contact_fax12 = CRMAF_contact.contactid INNER JOIN
    FilteredPhoneCall ON FilteredPhoneCall.new_contact_phonecall2 = CRMAF_contact.contactid

    Отчет выводит факсы нормально и по 10-2- повторений каждой записи звонок, при изменениями местами факсов и звонков в запросе — ошибка повторяется в измененном виде — много копий факсов, и нормальные звонки, SELECT DISTINCT не помогает, пробовал как внутренние соеденения inner так и внешние outer в данном случае left пробовал даже full вобщем все комбинации, ни чего не помогает, есть еще такое мнение, в конструкции:
    КОНТАКТЫ JOIN ФАКСЫ JOIN ЗВОНКИ не смотря на значение TO факсы цепляются к контактам а звонки к факсам, как бы последовательно по этому так и происходит, а нет ли такой конструкции, чтобы как бы параллельно, зацепить звонки к контактам и факсы к контактом непосредственно, или я ошибаюсь в чем то еще.
    Помогите пожалуйста
    Спасибо.

  • slivka_83 18.04.2009

    Добрый день!
    Вам нужно делать раздельную выборку из разных таблиц и объединять их с помощь конструкции UNION. Вот тут напрмер такие запросы используются:
    http://mmcrm.ru/?p=1359
    http://mmcrm.ru/?p=1341
    http://mmcrm.ru/?p=1275

  • Александр 18.04.2009

    Добрый день,
    а подскажите пожалуйста если есть справочник клиентов, его можно как-то прицепить к отчету. Отчет создан скриптами, поле «клиент» — текстовое. Сотрудники хотят что бы там выпадал справочник и оттуда можно было подтягивать клиента. Это возможно как то реализовать?

  • slivka_83 18.04.2009

    Здарсьте 🙂

    Вроде специально для 2011 нету, но переделать я думаю не сложно 🙂

  • Иван 18.04.2009

    У меня возникла такая проблема: когда делаю выборку бывает приходится задавать значения некоторых полей на русском, но в выборке получаю вместо русских символов только знаки вопросов. Например:
    SELECT ‘тест’ as test
    в выборке получаю ‘????’.
    При этом если выбрать из таблицы значение, то там русские символы отображаються корректно.

    Суть вопроса: где и что посмотреть для устранения данной проблемы? Сервер 2008 и VS2008

  • Иван 18.04.2009

    Добрый день.
    Когда делаю запрос что то типа:
    SELECT ‘тест’ test
    то получаю данные — ‘????’, причем если выбрать значение из таблицы с русскими символами, то отображение корректно.
    Что мне поправить что бы все работало как я хочу? ну или где поискать?

  • slivka_83 18.04.2009

    Здрасьте 🙂

    А Вы сейчас говорите о БД MS CRM?

  • Иван 18.04.2009

    Да, если конкретнее об отчете создаваемом в VS. Когда делаю DataSet и выбираю там данные, то получаю знаки вопроса в качестве содержимого полей, вместо русских символов. Причем если именовать поля на русском, то имена полей отображаються корректно.

  • slivka_83 18.04.2009

    А самая простая выборка, вроде:
    Select name from FilteredAccount
    тоже возвращает вопросы? А Msnsgement Studio тоже возвращаются вопросы?

  • Иван 18.04.2009

    «Select name from FilteredAccount» возвращает корректнуюю информацию.
    В Msnsgement Studio тоже возвращаются вопросы

  • slivka_83 18.04.2009

    Я уже запустался и не понемаю где/что отображается корректно а где нет:
    >причем если выбрать значение из таблицы с русскими символами, то отображение корректно
    >Когда делаю DataSet и выбираю там данные, то получаю знаки вопроса в качестве содержимого полей, вместо русских символов
    >«Select name from FilteredAccount» возвращает корректнуюю информацию.
    >В Msnsgement Studio тоже возвращаются вопросы

  • Александр 18.04.2009

    Добрый день,

    подскажите пожалуйста как в VS 2008 добавить к отчету элемент управления. Например пользователь может задать временной диапазон, в результате чего отчет выкатит данные за этот промежуток?

  • slivka_83 18.04.2009

    Добрый день 🙂

    Вот тут есть пример с диапазоном дат: http://mmcrm.ru/?p=638

  • Александр 18.04.2009

    Меня интересует момент когда именно в отчете пользователь сам можжет задать дату через элемент управления, имеет ли такую возможность visual studio 2008.

  • slivka_83 18.04.2009

    Что-то не пойму, что Вам нужно. Вот ввод даты: http://mmcrm.ru/wp-content/uploads/dashboard/rs6.png

  • Максим 18.04.2009

    Объясните пожалуйста подробно, как поставить Development Tools на VS 2008? Я установил 2008 сервер, но Business Intelligence появился в VS 2005, а не в VS 2008. А мне, для создания отчета в ms crm 2011, необходимо создавать использовать VS 2008
    =(

  • slivka_83 18.04.2009

    Для написания плагинов для CRM 2011 необходима 2010 студия.
    Отчеты пишутся с помощью BIDS (модуль для студии для написания отчетов), который поставляется вместе со скулем. Т.к. CRM 2011 работает с 2008 скулем то и BIDS будут для него. А BIDS для 2008 скуля написаны для 2008 студии. Вообщем плагины пишем в 2010 студии, а отчеты в 2008 (вместе с установленными BIDS).

  • Максим 18.04.2009

    Спасибо!

*

code