Иногда пользователям могут просто мешать лишние кнопки или лишние пункты меню в области переходов(NavBar). Очень простым кодом можно их либо скрыть, либо переименовать, чтобы пользователи не путались.
В CRM 3.0 и в CRM 4.0 есть отличие в реализации данной задачи, поэтому я расскажу отдельно и про тройку,и про четверку. Начнем с CRM 4.0. У меня сейчас стоит англ интерфейс в CRM, так что названия кнопок и менюшек будет английское
Изменять будем вот что: в сущности Коммерческое предложение (Quote) на панели переходов переименуем пункт «Exisitng Products» в «CHANGED», а пункты «Write-in Products» и «Other Contacts» вовсе уберем.

рис. 1 До и после
Теперь уберем из верхнего меню две кнопки «Recalculate» и «Look up Address»

рис. 2 До и после
Позаботимся также и о выпадающей менюшке. Из нее уберем пункт «Recalculate» и переименуем пункт «Look up Address» в «CHANGED(Look up Address)»

рис. 3 До и после
Осталось одно возможное нам действие – переименовать пункт верхнего меню. Я сделала Компред активным и переименовала кнопку «Create Order» в «CHANGED».

рис. 4 До и после
Делается это все очень даже просто, но если вы с этим никогда не сталкивались, то можете сразу и не сообразить. Итак, приведу код, который творит все эти махинации
OnLoad сущности Quote:
var lis = document.getElementsByTagName(‘LI’);
var i = 0;//идем по всем элементам
while (i < lis.length) {//скрываем п.м. «Recalculate» (рис.3)
if (lis[i].getAttribute(‘id’) == ‘_MIcrmFormSubmitCrmForm1truetruefalse‘) lis[i].outerHTML=’<SPAN></SPAN>’;//переименовываем пункт меню «Look up Address«(рис.3)
if (lis[i].getAttribute(‘id’)==’_MILookupAddress‘) lis[i].outerHTML=’<LI tabIndex=»-1″ action=»LookupAddress();» id=»_MILookupAddress» class=»ms-crm-MenuItem-Label»><SPAN class=»ms-crm-MenuItem-Label»><A class=»ms-crm-MenuLink» onclick=»return false;» href=»javascript:onclick();» tabIndex=»-1″ target=»_self»><SPAN class=»ms-crm-MenuItem-Icon»></SPAN><SPAN tabIndex=»0″ class=»ms-crm-MenuItem-Text»>CHANGED(Look up Address)</SPAN></A></SPAN></LI>‘;
//Скрываем кнопку «Recalculate»(рис.2)if (lis[i].getAttribute(‘id’)==’_MBcrmFormSubmitCrmForm1truetruefalse‘) lis[i].outerHTML=’<SPAN></SPAN>’;
//Скрываем кнопку «Look up Address»(рис.2)
if (lis[i].getAttribute(‘id’)==’_MBLookupAddress‘) lis[i].outerHTML=’<SPAN></SPAN>’;
//Переименовываем кнопку «Create Order»(рис.4)
if (lis[i].getAttribute(‘id’)==’_MBAcceptQuote‘)
lis[i].outerHTML=’<LI tabIndex=»-1″ class=»ms-crm-Menu» title=»CHANGED» action=»AcceptQuote();» onclick=»window.execScript(action)» id=»_MBAcceptQuote»><SPAN class=»ms-crm-Menu-Label»><A onclick=»return false;» href=»javascript:onclick();» target=»_self» tabIndex=»-1″ class=»ms-crm-Menu-Label»><IMG src=»/_imgs/ico/16_convert.gif» alt=»CHANGED» tabIndex=»-1″ class=»ms-crm-Menu-ButtonFirst»><SPAN tabIndex=»0″ class=»ms-crm-MenuItem-TextRTL»>CHANGED</SPAN></A></SPAN></LI>’;i = i + 1;
}
//в области переходов(рис.1)
document.all.navExistingProducts.getElementsByTagName(«nobr»)[0].innerHTML = «CHANGED»;
document.getElementById(«navWriteInProducts»).style.display = «none»;
document.getElementById(«navContacts»).style.display = «none»;
Наверно главный возникший вопрос – откуда берутся _MBAcceptQuote, _MIcrmFormSubmitCrmForm1truetruefalse и остальное?

рис. 5 View->Source
Открываете запись Компреда, жмете в IE View->Source и в блокноте открывается страница, содержащая все, что вам пригодится. Жмем CTRL+F и в поиске вбиваем название кнопки/пункта меню с которым нужно поработать. Ищем обрамление тегом <LI></LI>. Внутри этого тега есть id, вот он-то нам и нужен. Например, у кнопки «Look up Address» id=_MBLookupAddress, а у пункта меню «Look up Address» id=_MILookupAddress.

10.09.2009 в 08:18
Что такое запись Компреда?
10.09.2009 в 08:28
Хм.
Компред-коммерческое предложение,то есть сущность Quote.
Цитирую:»Изменять будем вот что: в сущности Коммерческое предложение (Quote)……»
10.09.2009 в 08:32
А как в записе открыть source если записи открываются в форме отдельной
10.09.2009 в 08:38
нажать F11 или Ctrl+N, а дальше догадаться
10.09.2009 в 08:45
Да плохо. У меня руссифицированный CRM и все русские буквы зашифрованы кодом
10.09.2009 в 08:52
Всё спасибо, по событиям нашёл. Они на англ
10.09.2009 в 08:53
А как можно поменять меню в представлениях?
10.09.2009 в 09:10
Не получается. Пишу
var lis = document.getElementsByTagName(«LI»);
var i = 0;
//идем по всем элементам
while (i < lis.length) {
if (lis[i].getAttribute("id") == "_MIchangeStatedeactivate100085")
{
lis[i].outerHTML="test«;
i=i+1;
}
10.09.2009 в 09:24
Ну так пробуйте еще. Проверяйте кавычки, ищите в общем
10.09.2009 в 09:31
Всё проверил
никак. Может я нельзя изменить динамически создаваемый пункт меню. Например, Сделать неактивным объект (…)
10.09.2009 в 09:41
Трудно понять вашу ошибку и с чем она связана. Все примеры на нашем блоге проверены нами же, поэтому не ясно в чем у вас может быть проблема.
Советую задать вопросы на специализированных ресурсах, например:
axforum.info/
groups.google.com/group/microsoft.public.crm.developer/topics?hl=en
social.technet.microsoft.com/Forums/ru-RU/dynamicsru/threads