Навигация в динамике 365 CRM App

У меня установлена ​​онлайн-версия Dynamics CRM 2016. Я создал веб-ресурс в этом приложении. Этот веб-ресурс запускается с помощью кнопки в списке аккаунтов.

На рабочем столе это работает отлично, он запускает новое окно, и я могу сделать то, что мне нужно, а затем перейти к новой записи в CRM с

Xrm.Utility.openEntityForm(entity, entityId);

а затем закройте окно с

window.close();

Я также могу получить доступ к этому веб-ресурсу в телефонном приложении (iOS). Но ни одна из вышеупомянутых двух команд не работает, когда ресурс загружен.

Я не могу перейти от веб-ресурса к записи, используя любую из следующих команд:

Xrm.Utility.openEntityForm(entity, entityId); // throws undefined error
window.open(recordURL); // does nothing
window.location.href = recordURL; // does nothing

И я не могу закрыть веб-ресурс ни с одним из них:

window.close(); // does nothing
window.history.go(-1); // goes to a blank page (even more infuriating).

Существуют ли какие-то конкретные команды javascript для этих вещей (перейдите к записи или вернитесь назад)? Я не могу найти какие-либо ссылки на то, какие команды я должен использовать в приложении Dynamics 365.

1 ответ

На этом сайте документации Microsoft есть некоторая информация о мобильных устройствах:

"Кроме того, Dynamics 365 для телефонов не поддерживает веб-ресурсы и IFRAMES, поэтому клиентские API для этих элементов управления не будут работать. Тем не менее , клиентские API для веб-ресурсов и IFRAMES поддерживаются в Dynamics 365 для планшетов ".

" Мобильные клиенты Dynamics 365 также не поддерживают метод window.open. Если вы хотите открыть форму сущности для новой или существующей записи, используйте вместо этого Xrm.Utility.openEntityForm".

Таким образом, оконные функции не поддерживаются. Xrm.Utility.openEntityForm() должно работать, хотя Возможно, запрос веб-API не доставляет требуемый гид для вызова функции из-за плохого интернет-соединения на мобильных устройствах.

Может быть, это просто не поддерживается, но нигде не задокументировано. По крайней мере, очень похожая функция Xrm.Utility.openWebResource() здесь не поддерживается состояние: Xrm.Utility.openWebresource ()

Имейте в виду, что вы должны использовать parent.Xrm для доступа к объекту Xrm внутри веб-страниц, которые встроены в виде iframe внутри формы объекта. Это считается для веб-страниц, открытых window.open() тоже.

В случае, если это просто не сработает, вы все равно можете сделать какое-то условное поведение или отступление:

var isCrmForMobile = (Xrm.Page.context.client.getClient() == "Mobile")
if (isCrmForMobile)
{
   // Code for CRM for phones and tablets only goes here.
}
else
{
   // Code for web browser or CRM for Outlook only goes here.
}
if (Xrm.Page.context.client.getClient() == "Mobile" && Xrm.Page.context.client.getFormFactor() == 3)
{
   // Add code that should only run in CRM for phones here
}
// Code for any client goes here.
Другие вопросы по тегам