В 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