Кастомизация
25
Июл
10

Дополнительные кнопки

В большинстве случаев требования к кастомизации CRM состоят из двух вещей – доработки функционала и автоматизации рутинных операций. Сейчас остановимся на втором требовании и рассмотрим парочку инструментов, коими Вы сможете облегчить жизнь Вашим юзверам!

CRM Grid Actions

CRM Grid Actions кастомный компонент, который позволяет пользователям выполнить общие crm’ные действия из списка записей (представлений) и форм, без необходимости открытия самой записи.

Возможности:

  • Завершать Действия (задачи, телефонные звонки, электронную почту, письма, встречи, факсы) из пердставлений;
  • Создавать телефонный звонок, задачу, электронную почту или обращение для выделенного контакта в представлении;
  • Устанавливает выделенный контакт как Основной контакт для организации, которая является для него родительским клиентом.

Установка:

  • Скачайте CRM Grid Actions и разархивируйте его;
  • Поместите папку icrmGridAction в C:\inetpub\wwwroot\ISV;
  • В этой папке есть подпапка Copy to main MSCRM bin в которой расположено два файла icrmGridActions.dll и icrmGridAction.pdb. Скопируйте их и поместите в папку C:\inetpub\wwwroot\bin;
  • Выгрузите файл ISV.config из CRM системы и откройте его в каком-нибудь текстовом редакторе;
  • В папке icrmGridAction также расположен файл ISV_Button_setting, в котором содержатся настройки для меню CRM;
  • Откройте его и скопируйте настройки для объекта contact и объекта activitypointer в файл customizations.xml, который создался при выгрузке ISV.config;
  • Загрузите ISV.config (т.е. файл customizations.xml) обратно в CRM;
  • Если Вы этого еще не сделали, то включите отображение настраиваемых меню в CRM системе: Параметры — Администрирование — Системные параметры — вкладка Настройка — секция Настраиваемые меню и панели инструментов — добавьте те клиенты, в которых хотите показывать новые кнопки 🙂



Тестируем:

Перейдите к представлению Контактов. Над представлением Вы заметите несколько новых кнопок (одна для установки контакта основным и четыре для создания Действий). Выделите запись какого-либо контакта и и нажмите,например, новую кнопочку создания Звонка. Откроется новая форма создания Звонка (первый раз открываться будет довольно продолжительное время, но в следующие разы гораздо быстрее), в которой уже будут заполнены поля Получатель и В отношении. Все 🙂


Упс… не все 🙂

Вместо нормального отображения кирилицы Вы увидите квадратики (разработка буржуйская, поэтому там мало уделили времени «Великому и могучему» 🙂 )! Что делать?

  1. Ничего 🙂 Сохраните и закройте запись — при следующем ее открытии кирилица будет нормально отображаться;
  2. Исправить (это придется делать в любом случаи если работаете на заказчика :)). А править будем так: парметры создания новой записи при использовании CRM Grid Actions передаются в адресной строке, причем кирилица нормально там отображается. Поэтому все что нужно – взять нужный параметр и его значени из адресной строки и подставить в лукап:
    • Отеройте онлоад звонка и добавьте туда следующий скрипт:
      //получаем строку URL
      var query = new String(window.location);
      //отделяем от нее параметры
      query = query.substring(query.indexOf('?') + 1);
      
      //разбиваем параметры на массив, каждый элемент массива содержит строку параметр=значение
      var vars = query.split("&");
      
      //перебираем весь массив
      for (var i=0;i<vars.length;i++) {
      
      	//разбиваем пары параметр=значение на отдельные элементы и кладем их в двумерный массив
      	var pair = vars[i].split("=");
      
      	//отыскиваем параметр содержащий имя Контакта (он называется partyname)
      	if (pair[0] == 'partyname') {
      
      		//далее формируем объект лукап
      		var lookupData = new Array();
      		var lookupItem= new Object();
      
      		lookupItem.id = crmForm.all.to.DataValue[0].id;
      		lookupItem.typename = 'contact';
      		lookupItem.name = pair[1];
      		lookupData[0] = lookupItem;
      
      		//и заносим его в поля Кому и Вотношении
      		crmForm.all.to.DataValue = lookupData;
      		crmForm.all.regardingobjectid.DataValue = lookupData;
      
      	}
      
      }
    • А теперь снова создадим запись Звонка с помощью CRM Grid Actions. На этот раз все в порядке!


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

Найти новые кнопочки Вы сможете в четырех местах системы: в представлениях Контактов и Действий, а также в связанных пердставлениях Контактов и Действий на формах различных объектов.



И еще… CRM Grid Actions не обновляют представление или форму открытой записи, поэтому, после например закрытия Действия как завершонного (из представления), Вы должны будете произвести обновление самостоятельно – нажав F5 и щелкнув кнопку обновления представления (находится справа от заголовков представления).

Дополнительные кнопки на панели инструментов

А сейча добавим несколько кнопок на панель инструментов форм Обращение/Контакт/Бизнес-партнера, которые выполняют функции, аналогичные прошлому примеру!

Итак…

  • Экспортируйте ISV.Config из CRM
  • Откройте его на редактирование файл customizations.xml
  • Найдите узел <entity name=»incident»> и добавьте к нему следующий код:
    <Entity name="incident">
    	<ToolBar ValidForCreate="0" ValidForUpdate="1">
    		<Button Icon="/_imgs/ico_16_137.gif" JavaScript="locAddActTo(4210)" PassParams="0" WinParams="" WinMode="0" Client="Web, Outlook" AvailableOffline="true">
    			<Titles>
    				<Title LCID="1049" Text="Новый телефонный звонок" />
    			</Titles>
    			<ToolTips>
    				<ToolTip LCID="1049" Text="Новый телефонный звонок" />
    			</ToolTips>
    		</Button>
    		<Button Icon="/_imgs/ico_16_138.gif" JavaScript="locAddActTo(4202)" PassParams="0" WinParams="" WinMode="0" Client="Web, Outlook" AvailableOffline="true">
    			<Titles>
    				<Title LCID="1049" Text="Новая электронная почта" />
    			</Titles>
    			<ToolTips>
    				<ToolTip LCID="1049" Text="Новая электронная почта" />
    			</ToolTips>
    		</Button>
    		<Button Icon="/_imgs/ico_16_4212_d.gif" JavaScript="locAddActTo(4212)" PassParams="0" WinParams="" WinMode="0" Client="Web, Outlook" AvailableOffline="true">
    			<Titles>
    				<Title LCID="1049" Text="Новая задача" />
    			</Titles>
    			<ToolTips>
    				<ToolTip LCID="1049" Text="Новая задача" />
    			</ToolTips>
    			</Button>
    			<Button Icon="/_imgs/ico_16_112_d.gif" JavaScript="resolve()" PassParams="0" WinParams="" WinMode="0" Client="Web, Outlook" AvailableOffline="true">
    			<Titles>
    				<Title LCID="1049" Text="Разрешить обращение" />
    			</Titles>
    			<ToolTips>
    				<ToolTip LCID="1049" Text="Разрешить обращение" />
    			</ToolTips>
    		</Button>
    	</ToolBar>
    </Entity>
    
  • Сохраните XML файл и импортируйте его обратно в CRM;
  • Теперь откройте какую-либо запись Обращения и любуйтесь Вашими новыми кнопочками. Создав с их помощью запись Электронной почты, например, в ней уже будет проставлены поля Кому и В отношении.


Разъяснение кода:

  • JavaScript="locAddActTo(4210)" PassParams="0" WinParams="" WinMode="0" Client="Web, Outlook" AvailableOffline="true"

    Здесь мы используем CRM’ную javascript функцию locAddActTo() и код объекта (в данном случаи 4210 это код Телефонного звонка) для открытия формы создания нового Действия, связанного с Обращением. Также мы «говорим» CRM показывать кнопку в Оутлуке и Web-клиенте CRM. Другие коды для стандартных оюъектов можете посмотреть в статье Прямой доступ к объектам MS CRM, а для кастомных смотрите в своей системе 🙂

  • JavaScript="resolve();" PassParams="0" WinParams="" WinMode="0" Client="Web, Outlook" AvailableOffline="true"

    Единственное отличие от предыдущего кода в том, что здесь используется функция resolve(), которая закрывает Обращение как разрешенное (что аналогичное команде Действия – Разрешить обращение).

Аналогичным образом можно добавить кнопки и на формы других объектов: Бизнес-партнеры, Контакты, Интерес и т.д.

Комментарии (10)
  • Роман 25.07.2009

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

  • slivka_83 25.07.2009

    Дико извеняюсь 🙂 поправил 🙂 спасибо, что подсказали 🙂

  • Тимур 25.07.2009

    Добрый день.
    Попытался добавить кнопку для создания встречи, но выдала ошибку. Или такая возможность не предусмотрена программой? И возможно ли связаться с автором CRM Grid Actions? Спасибо.

  • slivka_83 25.07.2009

    Возможно создание встреч и не поддерживается 🙂
    По поводу автора, Вам сюда: http://crmgridactions.codeplex.com/

  • Sergey 25.07.2009

    Сделал все как у Вас. Есть нюансы.
    1). Не работают кнопки в представлении для Контактов

    The resource cannot be found.
    Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

    Requested Url: /Diamantbank/activities/phone/edit.aspx

    Может это связано с тем, что исполнительные скрипты црм лежат в иной чем C:\inetpub\wwwroot\ISV ????

    2. Тот код, что вы написали на онлоад звонка, открывал в моем случае звонок с некорректным именем контакта, которое отображалось как последовательность спецсимволов. Когда код с онлоада убрал, получил корректное построение звонка, из карточки Обращений.

  • Sergey 25.07.2009

    У меня кнопки не работают из представления о «Активные контакты». Выдает такое …
    HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.

    Requested Url: /Diamantbank/activities/phone/edit.aspx

    Может это из-за того, что у меня все исполнительные скрипты лежат в иной чем C:\inetpub\wwwroot\
    папке?

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

  • Sergey 25.07.2009

    Теперь работает. Скачал со страницы автора последний релиз плагина.

  • Александр 25.07.2009

    Добрый день!

    Подскажите можно ли убрать кнопку с панели в основном окне CRM 4.0 например для удаления заказов CRM.
    Ролями нет возможности запретить, так как менеджеры не смогут удалять строки заказов. В ролях удаление строк и самого заказа одна и та же опция:(

  • slivka_83 25.07.2009

    Ну, самое простое решение это повесить плагин на уделение Заказа и при пытке это сделать выдавать ошибку. Также кнопку в принципе можно удалить с помощью JS, повесив его в какую-нибудь стандартную ASPX страницу CRM (ансапорт) и добраввшись до кнопки по DOMу (при загрузке страницы) скрыть ее.

  • Александр 25.07.2009

    Спасибо, slivka_83
    не хотелось плагин писать, думал может быть есть поддерживаемое решение через JS.

*

code