Когда-то была такая подзадача: при нажатии в crm форме на менюшку слева выдать не стандартное представление crm,  а свою страничку. Впрочем, не важно, страничку туда вешать или какое-то свое «событие», смысл в том, чтобы переопределить функцию, которая вызывается при нажатии на определенный пункт навигационного меню.

Расскажу как это сделать на маленьком тестовом примере. Будем работать с сущностью Обращение  и менюшкой «Действия» слева. Например, надо чтобы в Обращении при нажатии на Действия грузилась ваша aspx/html-страничка (не важно).


По пути где установлена MS CRM (в папке CRMWeb) я создала папку customHTML, а в ней обычный html-файл c именем test.html.

Теперь надо выяснить как называется area, которую нам нужно переопределить, открываем любое Обращение, жмем Ctrl+N, и выбираем View->Source.

case1nav

По файлу ищем слово Activities («Действия» это ведь Activities). В данном случае нас интересует функция loadArea, так как она вызывается при onclick и отвечает за те события, которые происходят при нажатии на пункт менюшки (Это также можно сделать с помощью Fiddler’а).

case2nav

Нашли как называется нужная нам Area,  в моем случае это areaActivities, теперь переопределим функции. Прописываем этот код в событие Onload сущности Обращение:

OldloadArea = loadArea;
window.f_reaction = function ()
{
url=’/customHTML/test.html’;
OldloadArea (‘areaActivities’, null,url);
}
loadArea = function (a) {
if (a != ‘areaActivities’) return OldloadArea (a);
setTimeout(‘f_reaction ()’, 1000);
}

Тут использую setTimeout только потому, что иногда код не успевает сработать и грузится стандартная area, так что лучше сделать задержку на секундочку :)

Ну и вот результаты. Вот так было:

case3nav

А вот так стало:

case4nav