Dynamics CRM 2011 — Изменение представления для связанного списка объектов

#javascript #dynamics-crm #dynamics-crm-2011

#javascript #dynamics-crm #dynamics-crm-2011

Вопрос:

У меня есть пара пользовательских объектов, которые связаны между собой отношением «многие ко многим» с использованием связующего объекта, который содержит некоторые связующие атрибуты. Для наглядности давайте назовем этих супергероев и суперзлодеев, и ссылка будет Fight.

 (Superhero) 1 --------- * (Fight) * -------- 1 (Supervillain)
  

То есть в каждом бою участвуют 1 супергерой и 1 суперзлодей, и в каждой комбинации супергерой / супервзлодей может быть любое количество боев, возможно, разного типа — меч, кулак и т.д.

Пока все просто. По сути, то, что я здесь делаю, — это воспроизведение новой функциональности «Соединений», но с использованием пользовательского типа связи, который работает только с супергероями и суперзлодеями. Причина этого в том, что я хочу показать их как отдельный элемент навигации в левой части формы, а не объединять их все в разделе «Соединения».

Теперь, из формы супергероя, когда я смотрю на связанные объекты в левой панели, я хочу показать список боев вместе с суперзлодеем, с которым сражался супергерой. Достаточно просто, я могу просто настроить «Представление, связанное с боем», чтобы показать тип боя и объект Supervillain. Это позволяет мне перейти от супергероя к суперзлодею, с которым он сражался.

Но как насчет того, если я хочу сделать то же самое из Supervillain? Тот же «Связанный с боем вид» отображается и для суперзлодеев, но его необходимо настроить, чтобы показать тип боя и связанного с ним супергероя… Но я не хочу, чтобы связанный вид «одного размера подходил всем» с полями супергероя и суперзлодея.

Я хочу, чтобы связанное представление менялось в зависимости от того, смотрю ли я на супергероя или суперзлодея. Итак, я создаю два новых представления, каждое с нужными столбцами. Теперь я могу вручную переключаться на эти представления при выборе связанного списка в каждом объекте. Это работает нормально, но я не хочу, чтобы этот ручной шаг выполнялся каждый раз, когда я смотрю на связанные бои.

Итак, наконец, я перехожу к сути вопроса: как я могу автоматически (т. Е. при необходимости с помощью скрипта) выбрать «Связанный» вид по умолчанию, который будет показан для боев, связанных с супергероями и суперзлодеями, в зависимости от типа объекта?

Используя скрипт формы, я могу достаточно легко получить элемент навигации, но после этого я теряюсь:

 function SuperHero_OnLoad()
{
    var fightItem = Xrm.Page.ui.navigation.items.get("nav_new_fight");
    // What next?!
    fightItem.MagicFunctionThatSelectsADefaultViewOrHacksIntoTheIframeParametersOrSomething();
}
  

Примечание: Я знаю, что могу использовать подсетку в основной форме редактирования, которая позволяет выбрать представление для отображения, но я не хочу забивать форму дополнительными подсетками. Я хочу использовать связанное дерево слева от формы.

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

1. Хорошо, я нашел в документах, здесь , что вы можете выбрать представление для взаимосвязи, отредактировав <NavBarByRelationshipItem> в Customizations.xml и добавление ViewId атрибута. Единственная проблема в том, что это не работает. Что, кстати, является довольно серьезной проблемой.

2. Просто для ясности: вы хотите, чтобы элемент навигации в левой части формы (если вы открыли SuperHero) отображал другой связанный вид, чем если бы вы открыли форму SuperVillian? Я помню, как возился с картой сайта и создал элемент навигации с чем-то вроде этого: http: //url/ORG/main.aspx?etn=new_entityamp;pagetype=entitylistamp;viewid={550DB1BB-9AF4-42A1-856E-4CAE35A5EB3A}amp;viewtype= 1039 Таким образом, он будет переходить непосредственно к представлению. Я обнаружил, что при указании непосредственно на представление, похоже, возникли проблемы (это привело бы к повторному открытию всего сайта внутри сайта).

3. Правильно. Итак, в CRM 2011 появилась новая функция, позволяющая пользователю выбирать представление для элементов взаимосвязи 1: N из выпадающего списка. Я просто хочу иметь возможность указать представление по умолчанию в соответствии с типом родительского объекта. ViewId должен это сделать, но у меня это не работает. Кому-нибудь повезло с этим?

Ответ №1:

ViewID в Customizations.xml работает, но вы задали вопрос слишком рано 😉 Произошла ошибка, которая была устранена в пакете обновления 10 и выше. У меня была та же проблема до обновления.