Кастомизация
01
Дек
11

Кастомизация не настраиваемых представлений

Как Вы знаете, обычно поля представлений задаются в параметрах объектов. Т.е. чтобы задать поля представлений, например, объекта Контакт, нужно открыть его в настройках объектов, перейти к Формам и представлениям, выбрать нужное представление и задать для него необходимые поля. Спрашиваете почему «обычно»? А потому что есть не обычные представления, поля которых так просто не задать. Одним из которых является, например, «Маркетинговый список». Для этого нужно воспользоваться воркэраундами. Парочку которых мы сейчас и рассмотрим…

viewManager

viewManager.aspx это инструмент который используется в CRM для редактирования представлений. Если Вы откроете настройки какого-либо представления, нажмете Ctrl + N и посмотрите формат строки URL, то увидите примерно такую строку:

http://<crmserver>/<orgname>/tools/vieweditor/viewManager.aspx?id={00000000-0000-0000-00AA-000010001001}&entityId={70816501-EDB9-4740-A16C-6A5EFBC05D84}&default=1

где id это GUID редактируемого представления. Причем этого параметра вполне достаточно для того, чтобы открыть на редактирование представление.

А чтобы найти GUID нужного представления (в данном примере будем искать представление Маркетингового списка) воспользуйтесь одним из двух способов:

  1. Выполните следующий запрос в отношении базы данных <ORG>_MSCRM:
    SELECT *
    FROM dbo.SavedQueryBase
    WHERE IsCustomizable = 0 AND Name LIKE '%Все участники%'
    

    где вместо «Все участники» укажите название нужного представления (отображается в ниспадающем списка справа вверху над представлением). Т.к. в связанных представлениях маркетинговых списков может отображаться три объекта (Контакт, Бизнес-партнер и Интерес), то Вы увидите три GUID’а. Определить какой из них Вам нужен поможет столбец ReturnedTypeCode, в котором указан код объекта отображаемого в представлении.


  2. Откройте маркетинговый список, нажмите Ctrl + N и скопируйте значение адресной строки:
    http://crm2008/superfirma/ma/lists/edit.aspx?id={1D9F8541-A4DE-DE11-B557-000C298F544B}#
    

    Перейдите в связанные представления и с помощью IEDevTool найдите значение атрибута src связанного представления. Оно будет примерно такой вид:

    areas.aspx?oId=%7b1D9F8541-A4DE-DE11-B557-000C298F544B%7d&oType=4300&security=852023&createdfromcode=1&tabSet=areaListMember
    

    Затем скомпонуйте первую и вторую строчку (из первой возьмите только путь до файла, а вторую целиком):

    http://crm2008/superfirma/ma/lists/areas.aspx?oId=%7b1D9F8541-A4DE-DE11-B557-000C298F544B%7d&oType=4300&security=852023&createdfromcode=1&tabSet=areaListMember
    

    Введите ее в строке браузера и посмотрите исходный код страницы (Вы можете это также сделать с помощью IEDevTool: View – Source – Original). Найдите в нем тэг с id равным viewid – в этом теге будет содержаться GUID нужного нам представления.



Ну, а дальше все просто – подставьте GUID в эту строку URL:

http://<crmserver>/<orgname>/tools/vieweditor/viewManager.aspx?id={guid}

т.е. в данном примере получится слудующее:

http://<crmserver>/<orgname>/tools/vieweditor/viewManager.aspx?id=51DE84DD-732F-440F-A506-26123A19AB50

Измените открывшееся представление по Вашему усмотрению.
Затем сделайте публикацию всех объектов.


Расширенный поиск

Визуальный способ…

  • Запустите расширенный поиск;
  • В ниспадающем списке «Искать» выберите «Представления»;
  • В качестве поля поиска выберите «Представление», условием поставьте «равно», а в лукапе укажите «Все участники». Маркетинговый список может быть создан для трех объектов Бизнес-партнер, Контакт, Интерес и каждому из них соответствует три связанных представления «Все участники», «Активные участники» и «Неактивные участники». Поэтому при поиске Вы увидите три записи «Все участники» — каждая соответствует Бизнес-партнеру, Контакту и Интересу. Выделите все три;
  • Нажмите Поиск. В результатах поиска щелкните по какой-либо записи, чтобы открыть редактирование этого представления;
  • После внесения изменений сохраните его и опубликуйте все объекты.



Комментарии (11)
  • Tommy 01.12.2009

    Привет! Спасибо за исключительно полезный блог!
    Возник такой вопрос — можно ли каким-то образом настроить представление Быстрого поиска для Участников маркетингового списка?
    Спасибо!

  • slivka_83 01.12.2009

    Добрый день.
    Если воспользуетесь вот этим SQL скриптом:

    SELECT *
    FROM dbo.SavedQueryBase
    WHERE IsCustomizable = 0 AND Name LIKE '%Быстр%марк%'
    

    то в столбце FetchXml найдете список возвращаемых полей. Я сам не успел поэксперементировать, но попробуйте его изменить на нужные Вам 🙂

  • Keni 01.12.2009

    У меня глупый вопрос.
    Откуда запускать расширенный поиск. Дело в том, что если его запускать скажем из маркетингового списка — участники маркетингового списка — управление участниками, то он не дает возможности выбрать в списке «Искать», «представления», там стоит тип маркетингового списка с которого я запустил поиск.

  • slivka_83 01.12.2009

    Это не важно. Расширенный поиск один для всех 🙂 При его открытии по умолчанию для поиска проставлен тот объект, с представления которого запущена форма Расширенного поиска. Но его можно потом изменить на любой другой.

  • Dmitry 01.12.2009

    Добрый день!

    а можно ли изменить область отображения для системного объекта, например для Контракт от кампании.
    необходимо выводить его в рабочей области в разделе Мои задачи, но к сожалению в настройке объекта эти опции заблокированы ;(

  • slivka_83 01.12.2009

    Через SiteMap попробуйте 🙂

  • Dmitry 01.12.2009

    спасибо за совет,
    но в таком случае я не смогу выбирать связанные с объектом представления (на сколько я понимаю)
    т.е. будет прописана ссылка на представление.

    или я не правильно понял?

  • slivka_83 01.12.2009

    Нет 🙂 я имел ввиду попробовать добавить ссылку на объект (в формате SitaMap’а — в SDK есть примеры), а не просто проставить URL.

  • Filo 01.12.2009

    Добрый день, столкнулся с такой проблемой, получается только для представления имеющего тип: представление быстрого поиска можно настраивать столбцы поиска?

    и представление такого типа у одной сущности может быть только одно? Тоесть к примеру для кастомного представления, я в SQL меняю тип на представление быстрого поиска(поле Query Type таблицы dbo.SavedQueryBase) то на выходе после изменения списка полей поиска сохранить представление не получается, выдается ошибка:
    [URL=http://imageban.ru/show/2012/12/07/a0d6c33a288507a05d0c4cf7492532ad/jpg][IMG]http://i5.imageban.ru/thumbs/2012.12.07/a0d6c33a288507a05d0c4cf7492532ad.jpg[/IMG][/URL]

    в теории для сущности объект недвижимости нужно представление для каждого типа недвижимости со своим списком полей и своим же поиском для этого представления по определенным полям, пример: тип квартира: поиск по кол-ву комнат, площади, району

  • slivka_83 01.12.2009

    Добрый день.

    Я не совсем понимаю, что Вы пытаетесь сделать?
    Представление Быстрого поиска действительно одно для Сущности. Когда Вы вводите текст поиска в соответствующее поле и нажимаете поиск, то CRM автоматически переключается с текущего представления в Представление Быстрого поиска. Т.е. смысла настраивать столбцы поиска для других Представлений просто нет.

  • Filo 01.12.2009

    Если бы переключался вопроса бы не возникло, просто получается так что даже если в быстром поиске поля настроены, по каким то не ясным причинам поиск не осуществялется выдает представление быстрого поиска но не выдает ничего найденного (для кастомной сущности)

*

code