В MS CRM 365 версии изменился подход в работы с JS функциями.

Начиная с CRM 2011(v 5.x) основным js объектом для взаимодействия с формой был Xrm.Page в CRM 365 (v 9.x) этот способ все еще работает, однако уже стал «Deprecated». В этой статье будут записаны js методы, применяемые мной на практике сигнатуре CRM 365(v 9.x) и более ранних версиях.

Наиболее полный список JS методов можно найти на по ссылке https://docs.microsoft.com/en-us/powerapps/developer/model-driven-apps/clientapi/reference

Получить значение из поля

formContext.getAttribute("[AttirubeSchemaName]").getValue(); // CRM 365:
Xrm.Page.getAttribute("[AttirubeSchemaName]").getValue(); //CRM2016:

Получить значение из поля типа Lookup

// CRM365
var lookup = new Array();
lookup = Xrm.Page.getAttribute("[AttirubeSchemaName]").getValue();
if (lookup != null)
{
	var name = lookup[0].name;             // название записи
	var id = lookup[0].id;                 // id записи
	var entityType = lookup[0].entityType; // название сущности
}

//CRM2016
var lookup = new Array();
lookup = Xrm.Page.getAttribute("[AttirubeSchemaName]").getValue();
if (lookup != null)
{
	var name = lookup[0].name;             // название записи
	var id = lookup[0].id;                 // id записи
	var entityType = lookup[0].entityType; // название сущности
}

Получить значение из поля типа OptionSetValue

formContext.getAttribute("[AttirubeSchemaName]").getValue(); //CRM 365
Xrm.Page.getAttribute("[AttirubeSchemaName]").getValue();    //CRM 2016

Задать значение для поля

formContext.getAttribute("[AttirubeSchemaName]").setValue(); // CRM 365:
Xrm.Page.getAttribute("[AttirubeSchemaName]").setValue();    // CRM 2016:

Задать обязательность для поля

// возможные варианты для requirementLevel
// none        Необязательный для заполнения
// required    Обязательный для заполнения
// recommended Рекомендован для заполнения
formContext.getAttribute("[AttirubeSchemaName]").setRequiredLevel(requirementLevel); // CRM 365:
Xrm.Page.getAttribute("[AttirubeSchemaName]").setRequiredLevel(requirementLevel);    //CRM2016:

Задать значение для поля типа Lookup

formContext.getAttribute("[AttirubeSchemaName]").setValue //CRM 365
(
	[{ id: recorid, name: recordname, entityType: entityname}]
);
Xrm.Page.getAttribute("[AttirubeSchemaName]").setValue //CRM2016
(
	[{ id: recorid, name: recordname, entityType: entityname}]
);
//recorid: GUID записи
//recordname: текст, который будет отображаться Lookup
//entityname: Название сущности, на которую настроен Lookup

Скрыть/показать поле на форме

// в зависимости от значения параметра, который передается
// в фи-ю setVisible поле будет отображаться или скрываться
formContext.getControl("[AttirubeSchemaName]").setVisible(bool); //CRM 365
Xrm.Page.getControl("[AttirubeSchemaName]").setVisible(bool);    //CRM2016

Сделать поле на форме неактивным/активным(Enable/Disable)

// в зависимости от значения параметра, который передается
// в фи-ю setVisible поле будет отображаться или скрываться
formContext.getControl("[AttirubeSchemaName]").setDisabled(bool); //CRM 365
Xrm.Page.getControl("[AttirubeSchemaName]").setDisabled(bool);    //CRM2016

Тип формы

//
//0 Undefined
//1 Create
//2 Update
//3 Read Only
//4 Disabled
//6 Bulk Edit

formContext.ui.getFormType();// CRM 365
Xrm.Page.ui.getFormType(); //CRM2016:

Добавить обработчик OnChange для поля

formContext.getAttribute(arg).addOnChange(myFunction) // CRM 365:
Xrm.Page.getAttribute(arg).addOnChange(myFunction)    // CRM 2016:

Сохранить форму

//CRM 365
formContext.data.save(); //Сохранить
formContext.data.entity.save("saveandclose"); //Сохранить и закрыть
formContext.data.entity.save("saveandnew");   //сохранить и запустить новый

// отмена сохранения
function preventAutoSave(executionContext) {
	var eventArgs = executionContext.getEventArgs();
	if (eventArgs.getSaveMode() == 70) { // отменяет автосохранение
		eventArgs.preventDefault(); // вызывает отмену соханения на форме
	}
}

//CRM2016
Xrm.Page.data.save(); //Сохранить
Xrm.Page.data.entity.save("saveandclose"); //Сохранить и закрыть
Xrm.Page.data.entity.save("saveandnew"); //сохранить и запустить новый

Закрыть форму

formContext.ui.close(); //CRM 365
Xrm.Page.ui.close();    //CRM 2016

ID текущей записи

formContext.data.entity.getId(); //CRM 365
Xrm.Page.data.entity.getId();    //CRM 2016

ID текущего пользователя

//CRM 365
var userSettings = Xrm.Utility.getGlobalContext().userSettings;
userSettings.userId

//CRM2016
Xrm.Page.context.getUserId();

Получение URL CRM

//CRM 365
var globalContext = Xrm.Utility.getGlobalContext();
globalContext.getClientUrl();

//CRM2016
Xrm.Page.context.getClientUrl();

//в еще более старых версиях
Xrm.Page.context.getServerUrl();

Обновить Ribbon

formContext.ui.refreshRibbon();//CRM 365
Xrm.Page.ui.refreshRibbon();//CRM2016

от admin

Добавить комментарий

Ваш адрес email не будет опубликован.