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 запоминает, а НЕ та, которую я указал в formId.
Кому-нибудь удалось открыть конкретную форму в новом интерфейсе?
1 ответ
Я вижу пару потенциальных проблем с вашим кодом.
Первый связан с тем, как генерируется контекст формы, потому что его действительно нужно получить с помощью метода getFormContext ( документация кажется неправильной) из primaryControl
объект:
var formContext = primaryControl.getFormContext();
Второй параметр - это имя параметра formId, которое в соответствии с документацией должно быть написано заглавными буквами I. Это может не быть проблемой, но помните, что спецификация json гласит следующее:
Все имена членов, которыми обмениваются между Клиентом и Сервером и которые рассматриваются для сопоставления любого рода, должны рассматриваться с учетом регистра. Термины функция, метод и процедура могут считаться взаимозаменяемыми.