Привычка полагаться на 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 User
Xrm.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 или нажмите здесь чтобы информировать меня. Спасибо.