Кастомизация
20
Авг
6

Отображение неактивных записей в стандартных представлениях

Есть два типа представлений в MS CRM: стандартные (т.е. поставляемые вместе с CRM) и кастомные (которые Вы можете создать, например, с помощью Расширенного поиска, а затем сохранить). С кастомными представлениями все понятно – делаем что хотим (создаем, удаляем, меняем и т.д.), а вот со стандартными не все так просто – одни из их настроек заблокированы, а другие вообще скрыты.

Итак, преамбула: представление Быстрого поиска возвращают только активные записи. Но иногда требуется, чтобы отображались и активные и неактивные записи. Та же история и другими представлениями, например, со связанными записями или лукапами!

— Какой диагноз, доктор?
— Хардкод! Будем лечить! 🙂

Быстрый поиск

  • Экспортируйте настройку какого-либо объекта (или нескольких) в xml файл (я взял для пример объект Бизнес-партнеры), у которого при быстром поиске хотите отобразить все записи;
  • Отройте xml-файл в каком-либо текстовом редакторе;
  • Найдите раздел savedquery, в котором тег LocalizedName равен «Быстрый поиск активных организаций»;
  • В этом savedquery-разделе удалите следующие строки:
    <filter type="and">
    	<condition attribute="statecode" operator="eq" value="0" />
    </filter>
    
  • Сохраните и импортируйте xml-файл в CRM. Затем опубликуйте.

Теперь откройте представление нужного объекта и введите в быстрый поиск * (что означает поиск всех записей) и нажмите Enter. В представлении отобразятся как активные, так и неактивные записи.



Связанные представления

Со связанными представлениями все делается аналогичным образом (с парой нюансов):

  • Откройте форму настройки нужного объекта и перейдите на левой панели в Формы и представления. Перед вами предстанет список представлений, доступных для данного объекта. Запомните название для связанного представления. Например, для объекта Бизнес-партнеры оно будет называться «Представление связанных организаций».
  • Экспортируйте настройки этого объекта в xml-файл и откройте в текстовом редакторе!
  • Найдите раздел savedquery содержащий название связанного представления и удалите из него строчку, подобную этой:
    <filter type="and">
    	<condition column="statecode" value="0" operator="eq" />
    </filter>
    
  • Сохраняйте, импортируйте и публикуйте!

Открываем связанное представление этого объекта и видим неактивные записи!



Другие стандартные представления

Работа с другими стандартными представления ничем не отличается от работы со связанными представлениями. Вам только нужно открыть Формы и представления нужного объекта и запомнить название нужного стандартного представления (которое затем и искать в xml-файле)!

Лукап

С лукапами все проще. Вам всего лишь необходимо добавить на онлоад нужного объекта следующий код

crmForm.all.<имя_лукапа>.lookupclass = "alllookups";

К примеру, для лукапа Родительский клиент объекта Контакт это строчка будет выглядеть так:

crmForm.all.parentcustomerid.lookupclass = "alllookups";


Статус

И было бы неплохо, если Вы добавите поле Статус в представления – чтобы юзверы знали с какими записями работают! 🙂


Лютый ансапорт

Ну и последний способ… сделать представление реактируемым через обычную форму настроек. Для этого нужно выполнить в отношении базы данных org_MSCRM вот такой SQL-запрос:

UPDATE [SavedQueryBase]
SET IsCustomizable = 1
WHERE Name = 'Быстрый поиск активных организаций'

После этого Вы сможете открыть представление быстрого поиска (на форме настроек) и изменить его фильтр по своему желанию 🙂

Комментарии (6)
  • Азат 20.08.2009

    Удалил строки

    НО неактивные записи не появляются в связанном представлении 🙁
    Имеем объект «Вариант», относящийся к объекту «Контакт» как N:1 (т.е. у одного контакта может быть несколько вариантов).
    Открываем контакт, в левой области переходов нажимаем «Варианты» и видим только активные… Если сделать активный вариант неактивным, он исчезает 🙁
    Экспортировал объект «Вариант», привожу кусок, относящийся к связанному представлению. Что тут не так?

    realty_object_stop
    createdon
    realty_object_stop

    0
    1
    1
    0
    1
    10004
    {2059078C-58BF-4665-8A91-62833274116E}
    {D8A1E868-5286-4438-90FB-CA4090E7042F}

    1
    4

  • slivka_83 20.08.2009

    Сейчас нет возможности проверить, но возможно в каком-нибудь ролапе это было захардкодено…

  • Азат 20.08.2009
    <LocalizedName description="Вариант связанное представление" languagecode="1049" />
                </LocalizedNames>
              </savedquery>
              <savedquery>
                <columnsetxml>
                  <columnset>
                    <column>realty_object_stop</column>
                    <column>createdon</column>
                    <ascend>realty_object_stop</ascend>
                  </columnset>
                </columnsetxml>
                <iscustomizable name="Нет">0</iscustomizable>
                <isquickfindquery name="Да">1</isquickfindquery>
                <isuserdefined name="Да">1</isuserdefined>
                <isprivate>0</isprivate>
                <isdefault name="Да">1</isdefault>
                <returnedtypecode formattedvalue="10 004">10004</returnedtypecode>
                <savedqueryid>{2059078C-58BF-4665-8A91-62833274116E}</savedqueryid>
                <savedqueryidunique>{D8A1E868-5286-4438-90FB-CA4090E7042F}</savedqueryidunique>
                <layoutxml>
                  <grid name="resultset" object="10004" jump="realty_object_stop" select="1" icon="1" preview="1">
                    <row name="result" id="realty_ojectsid">
                      <cell name="realty_object_stop" width="300" />
                      <cell name="createdon" width="125" />
                    </row>
                  </grid>
                </layoutxml>
                <customizationlevel formattedvalue="1">1</customizationlevel>
                <querytype formattedvalue="4">4</querytype>
                <fetchxml>
                  <fetch version="1.0" mapping="logical">
                    <entity name="realty_ojects">
                      <attribute name="realty_ojectsid" />
                      <attribute name="realty_object_stop" />
                      <attribute name="createdon" />
                      <order attribute="realty_object_stop" descending="false" />
                    </entity>
                  </fetch>
                </fetchxml>
                <LocalizedNames>
    

    Установлен ролап 10

  • Азат 20.08.2009

    …кстати, данная проблема была решена майкрософтом для CRM 3.0
    http://support.microsoft.com/kb/934805

    Почему она перешла в 4-ю версию — совсем непонятно.
    Может быть, «так и задумано» — только непонятно, с какой целью7

  • slivka_83 20.08.2009

    Вернусь из отпуска — проверю на тестовой машинке 🙂

  • Азат 20.08.2009

    Кажется, нашел решение 🙂

    Все дело вот в чем:
    Параметры — Системные параметры — Настройка — Выберите клиентов, которые будут отображать…..

    Кстати, от принятой в crm системы активации-деактивации объектов пришлось отказаться.
    Т.к. нам часто приходится вносить изменения в неактивные объекты, очень неудобно Активировать объект — Искать объект — Вносить изменения — Опять искать — Деактивировать.
    С этой целью были созданы кастомные поля Статус, отвечающие за Активные и Неактивные объекты. Необходимость отображения активных и/или неактивных объектов настраивается добавлением фильтра в соответствующее представление.

*

code