Привычка полагаться на IntelliSense приводит к тому, что когда его нет, начинаешь забывать как делать какие-то простые вещи. До сих пор регулярно сталкиваюсь с тем, что для написания банальных действий с CRM 2011 из JavaScript открываю Google.
Поэтому немного полезной информации, чтобы больше не забывать:
Работа с полями
Во-первых, чтобы скрипт работал на форме его необходимо добавить в веб-ресурс и добавить этот веб-ресурс непосредственно на форму.
Получить значение текстового поля «Action Code»
Xrm.Page.data.entity.attributes.get("actioncode").getValue();Сохранить значение «AC231» в текстовое поле «telephone»
Xrm.Page.data.entity.attributes.get("actioncode").setValue("AC231");Получить значение пиклиста «type»
Xrm.Page.data.entity.attributes.get("type").getValue(); //Цифровое значениеXrm.Page.data.entity.attributes.get("type").getText(); //Текстовое значение«undefined» если значение не выбрано.
Установить значение 2 пиклиста «type»
Xrm.Page.data.entity.attributes.get("type").setValue(2);Установить значение поля с датой «scheduled» на сегодня
var today = new Date();Xrm.Page.data.entity.attributes.get("scheduled").setValue(today);Узнать завтрашную дату можно так
var tomorrow = new Date();tomorrow.setDate(tomorrow.getDate() + 1);К моему стыду я дико не люблю работу с датой в JavaScript и не люблю когда возникают такие задачи.
Отключить (Disable) поле «name»
Xrm.Page.ui.controls.get("name").setDisabled(true);Скрыть (Hide) поле «name»
Xrm.Page.ui.controls.get("name").setVisible(false);Скрыть (Hide) секцию в табе
Xrm.Page.ui.tabs.get("tabname").sections.get("sectionname").setVisible(false);Работа с формой
Сохранить форму
Сохранить и закрыть форму
Xrm.Page.data.entity.save("saveandclose");Остановить сохранение формы
Вешаемся на событие формы OnSave.
function formOnSave(context){ var shouldSave = true; if (shouldSave) { alert("Unable to save because of some reason or the other."); context.getEventArgs().preventDefault(); }}При настройке события необходимо поставить галочку в поле «Pass execution context as first parameter».
Закрыть форму
Тип формы
CRM предлагает следующие типы форм:
Create — 1, открыта форма для создания новой записи
Update — 2, открыта форма существующей записи
Read Only — 3, форма только на чтение
Disabled — 4, неактивная форма
Bulk Edit — 6, форма массового редактирования.
Получить GUID текущей записи
Получить GUID текущего пользователя
Получить LCID текущего пользователя и организации
Xrm.Page.context.getUserLcid(); //For UserXrm.Page.context.getOrgLcid(); //For OrganizationСписок LCID на MSDN здесь.
Получить URL сервера CRM
Лукапы
Получить GUID значение лукапа «accountid»
Xrm.Page.data.entity.attributes.get("accountid").getValue()[0].id;Получить текстовое значение лукапа «accountid»
Xrm.Page.data.entity.attributes.get("accountid").getValue()[0].name;
Открыть диалоговое окно
В CRM 2011 есть обертка для window.showModalDialog(), функция называется openStdDlg().
openStdDlg(sPath, oArgs, iWidth, iHeight, bResizable, bModeless, sCustomWinParams);
где:
sPath — ссылка на окно,
oArgs — объект с параметрами,
iWidth — ширина окна,
iHeight — высота окна,
bResizable — можно ли изменять размер окна,
bModeless — ,
sCustomWinParams — пользовательские параметры, передаваемые в окно.
Открыть форму сущности
Следующий пример открывает форму существующей сущности incident с GUID = 47c2bb7b-ba62-4afb-9b10-1a24c7a2799e в новом окне.
window.open(Xrm.Page.context.getServerUrl() +"/main.aspx?etn=incident&pagetype=entityrecord&id=" +encodeURIComponent("{47c2bb7b-ba62-4afb-9b10-1a24c7a2799e}"),"_blank","location=no,menubar=no,status=no,toolbar=no",false);На мой взгляд стоит использовать функции, появившиеся в 8 Rollup, но в специфичных случаях приходится использовать стандартные.
Обновить состояние рибон
Если Вы нашли ошибку, пожалуйcта выделите ее и нажмите Shift + E или нажмите здесь чтобы информировать меня. Спасибо.