Установка содержимого IFrame’а (или Аудит на форме)
В CRM 2011 появилась замечательная возможность выносить Представления на форму объектов. Но некоторые объекты не поддерживают этот функционал. Например, объект Аудит. Чтобы исправить это, прибегнем к старому знакомому неподдерживаемому JS-скрипту…
- Создайте JS Веб-ресурс с таким кодом:
// iframeObjId - имя iFrame'а // objectType - имя объекта // areaName - имя ссылки в левой навигационной панели // formId - GUID объекта, отображаемого в текущей форме (опционально) function SetIframeContent(iframeObjId, objectType, areaName, iframeTitle, formId) { // Получаем ссылку на iFrame var iframeObject = Xrm.Page.getControl(iframeObjId); if (iframeObject != null) { // Устанавливаем URL для iFrame'а var strURL = "areas.aspx?formid=" + formId + "&navItemName=" + iframeTitle + "&oId=" + Xrm.Page.data.entity.getId() + "&oType=" + objectType + "&pagemode=iframe&security=852023&tabSet=" + areaName; iframeObject.setSrc(strURL); } }
- Вынесите на форму объекта (в этом примере это Организация) iFrame. Обязательно запретите для него обмен скриптами;
- Добавьте созданный Веб-ресурс к форме и на онлоаде вызовите функцию SetIframeContent. Передайте ей такие параметры:
- iframeObjId — имя iFrame’а;
- objectType — имя объекта;
- areaName — имя ссылки в левой навигационной панели;
- formId — GUID объекта, отображаемого в текущей форме (опционально).
К примеру, чтобы вынести на форму Организации в iFrame записи аудита, нужно передать такую строку: «IFRAME_audit», 1, «areaAudit», «Audit History»,»» (где IFRAME_audit это имя iFrame’а).
З.Ы. при таком подходе некоторый функционал не будет доступен. Например, Лента не обновиться и т.д.