четверг, 29 октября 2020 г.

MS CRM JavaScript

 В 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(); //CRM2016

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


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

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


// возможные варианты для 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) //CRM2016:

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


//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();//CRM2016

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


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

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

Комментариев нет:

Отправить комментарий