Xrm.Navigation.openForm не учитывает formid в едином интерфейсе

Я использовал эту технику в следующем посте:

Xrm.Navigation.openForm не поддерживает formid

который отлично работает в классическом интерфейсе.

Я обновил свой JavaScript следующим образом:

function OpenSpecificForm(primaryControl)
    {
        const FORMID = "A696976B-EA8A-42F3-B4DC-F35DC9204D58";                      

        var formContext       = primaryControl;
        var parameters        = { formid: FORMID };
        var entityFormOptions = {};
        entityFormOptions["entityName"] = "new_entity_name";

        var recordId = formContext.data.entity.getId();                    
        var recordName   = formContext.getAttribute("new_name").getValue();    

        if (recordId != null)   { parameters["new_targetentityfieldid"] = recordId; }
        if (recordName != null) { parameters["new_targetentityfieldname"] = recordName; }

        Xrm.Navigation.openForm(entityFormOptions, parameters);
    }

и установите ленточный верстак следующим образом:

Параметр Crm

Этот код продолжает работать должным образом в классическом интерфейсе пользователя, но, похоже, не работает в новом унифицированном интерфейсе. Форма сущности открывается, но открывается последняя, ​​которую помнит CRM, а НЕ та, которую я указал в formId.

Кому-нибудь удалось открыть конкретную форму в новом UI?


person Bharat Premji    schedule 21.11.2018    source источник
comment
Вы пробовали использовать formId вместо formid? Имя параметра изменилось при замене Xrm.Utility.openEntityForm на Xrm.Navigation.openForm   -  person Federico Jousset    schedule 21.11.2018
comment
Спасибо за ответ, к сожалению, изменение параметра на formId не помогает. Он перестает работать как в старом, так и в новом пользовательском интерфейсе.   -  person Bharat Premji    schedule 23.11.2018


Ответы (1)


Я вижу пару потенциальных проблем с вашим кодом.

Первый связан с тем, как создается контекст формы, потому что его действительно нужно получить с помощью метода getFormContext (документация кажется неправильным ) от объекта primaryControl:

var formContext = primaryControl.getFormContext();

Второй параметр - это имя параметра formId, которое согласно документация должны быть написаны с заглавной буквы I. Это может не быть проблемой, но помните, что json spec утверждает следующее:

Все имена участников, которыми обмениваются Клиент и Сервер и которые считаются совпадающими любого типа, должны считаться чувствительными к регистру. Можно предположить, что термины функция, метод и процедура взаимозаменяемы.

person Federico Jousset    schedule 21.11.2018
comment
Привет, добавление getFormContext () работает в старом пользовательском интерфейсе, однако в пользовательском интерфейсе я получаю сообщение об ошибке сценария: primaryControl.getFormContext не является функцией. - person Bharat Premji; 23.11.2018
comment
при использовании ленты и передаче primaryControl вашей js-функции используйте объект primaryControl, как если бы это был formContext. См. stackoverflow.com/a/54012344/44815 - person Raj Rao; 04.01.2019