AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.03.2012, 18:52   #1  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Angry Как получить информацию о текущей форме?
CRM 2011
На риббоне есть кнопка, вызывающая веб-ресурс (Silverlight).
Кнопка находится на форме записи, а также в гриде связанных записей.
Нужно получить ID записи, если это форма и список ID, если это грид (список выделенных записей).
Как в Silverlight (или хоть на JavaScript) понять что это за форма, если это грид, тот как получить список выделенных записей...

Судя по всему надо как то пользовать объект Xrm.Там есть метод getControlType, который вроде должен возвращать тип формы, но Xrm.Page.ui почему то null...

Помогите пожалуйста, всю голову уже себе этим сломал
Старый 01.03.2012, 19:22   #2  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
для Form вы можете в Action передавать Url и добавить Crm Parameter - FirstPrimaryItemId
для Home и Sub-grid: Crm Parameter - FirstSelectedItemId (для одной выбранной записи) для нескольких наверно подойдет - SelectedControlSelectedItemIds

Рекомендую скачать этот инструмент http://crmvisualribbonedit.codeplex.com/ и для вашей сущности поиграться с настройками в Action и возможными параметрами для передачи.
Старый 01.03.2012, 20:22   #3  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Попробуйте так... сделайте две внешне одинаковые кнопки, но вызывающие разные функции (JS Веб-ресурса) т распаложенные, соотвветственно на ленте основной формы и связанныз записей. Для получения GUID’ов выделенных записей:
X++:
<RibbonDiffXml>
  <CustomActions>
    <CustomAction Id="new_MyFirstButton"
                  Location="Mscrm.HomepageGrid.{!EntityLogicalName}.MainTab.Management.Controls._children"
                  Sequence="31" >
      <CommandUIDefinition>
        <Button Id="B_MyFirstButton"
                LabelText="Супер кнопка"
                ToolTipTitle="Подсказка для супер кнопки"
                ToolTipDescription="Описание для супер кнопки"
                TemplateAlias="o1"
                Image32by32="$webresource:new_cub32.png"
                Command="Form.account.CustomButton" />
      </CommandUIDefinition>
    </CustomAction>
  </CustomActions>
  <Templates>
    <RibbonTemplates Id="Mscrm.Templates"></RibbonTemplates>
  </Templates>
  <CommandDefinitions>
    <CommandDefinition Id="Form.account.CustomButton">
      <EnableRules>
        <EnableRule Id="Mscrm.Enabled" />
      </EnableRules>
      <DisplayRules/>
      <Actions>
        <JavaScriptFunction FunctionName="AlertGUID" Library="$Webresource:new_AlertGUID.js" >
          <CrmParameter Value="SelectedControlSelectedItemIds" />
        </JavaScriptFunction>
      </Actions>
    </CommandDefinition>
  </CommandDefinitions>
  <RuleDefinitions>
    <TabDisplayRules/>
    <DisplayRules/>
    <EnableRules/>
  </RuleDefinitions>
  <LocLabels />
</RibbonDiffXml>
JavaScript Beб-ресурс с именем new_AlertGUID.js:
X++:
function AlertGUID(SelectedControlSelectedItemIds) {
  alert("SelectedControlSelectedItemIds: " + SelectedControlSelectedItemIds); // Все GUID'ы разделенные запятыми
}
Ну а для второй кнопки чтобы получить id текущей записи:
X++:
Xrm.Page.data.entity.getId();
ну или можно пошаманить с CrmParameter и PrimaryItemIds (http://msdn.microsoft.com/en-us/library/gg309332.aspx).
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
За это сообщение автора поблагодарили: mistah (1).
Старый 05.03.2012, 14:47   #4  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
ААААААААААААААААААААААААААААААА, я всю голову уже себе сломал....

Сделал кнопку. Тип действия - открывание URL веб-ресурса. Через CrmParameter сделал чтобы в адресную строку подставлялись нужные мне параметры. Все нормально, строка формируется но Silverlight-приложение при этом отказывается запускаться напроч. Убираю параметры из строки адреса - запускается. Что за нах?

Ладно, так не получилось - пробую по другому. Сделал дейcтвие - вызов JavaScript.
X++:
function Foo(formEtn, formId, gridIds) {
	var page = context.prependOrgName('/WebResources/Foo/Loader.html');
	window.open(page);
}
Окно открывается но тут же происходит ошибка скрипта, проблема в скрипте получения контекста. Конкретно дебаггер ругается на строку Xrm.Page.getControl(). При этом Xrm - вроде бы вполне себе объект, но в нем нет свойства Page.

Блин, просто не знаю что делать... В голове куча слов и все матерные... То ли я дурак, то ли лыжи не едут...
Кто-нибудь знает как отрыть Silverlight-приложение и передать туда данные? Хоть как нибудь?
Старый 05.03.2012, 15:22   #5  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
http://jesseliberty.com/2008/12/26/p...-applications/
http://www.voidspace.org.uk/ironpyth...riptable.shtml
http://www.byteblocks.com/post/2009/...lverlight.aspx
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 05.03.2012, 15:47   #6  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Да нет, я говорю о параметрах из CRM...
Никак не могу понять почему ClientGlobalContext.js.aspx валится с ошибкой и почему веб-ресурс не открывается с параметрами...
Старый 05.03.2012, 15:50   #7  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Вообще говоря, в том, что валится ClientGlobalContext.js.aspx и в том, что непосредственно из Silverlight я не могу достучаться до части функций Xrm, видится связь. Но как это пофиксить... Где то попадалась информация, что такое может быть, если где то в JS библиотеке есть команды, не упрятанные в функции. Но такого вроде не наблюдается...
Старый 05.03.2012, 15:53   #8  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
ClientGlobalContext.js.aspx предоставляет доступ к следующим функциям http://msdn.microsoft.com/en-us/library/gg334511.aspx
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 05.03.2012, 15:53   #9  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
А при попытке открыть веб-ресурс с параметрами, типа вот так:
http://localhost/org/%7B634665441520...w_registration валится ошибка

X++:
An error has occurred. 

Try this action again. If the problem continues, check the Microsoft Dynamics CRM Community for solutions or contact your organization's Microsoft Dynamics CRM Administrator. Finally, you can contact Microsoft Support
.

Убираеш параметры - открывается... вообще не понятно с чего вдруг.
Старый 05.03.2012, 16:02   #10  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Не знаю, может я как то сумбурно описал задачу и проблему, сейчас попробую еще раз...

В общем задача такая... Есть Silverlight-приложение, в которое нужно каким то способом передать ID текущей записи (или массив ID, если открыта форма связанных записей).

Соответственно есть два пути как вызвать мое приложение и передать ему параметры.

1. Сделать кнопку типа ссылку, которая будет открывать ресурс и в качестве параметров в строке адреса передавать нужные мне параметры, полученные с помощью CrmParametr.
Тут облом - ресурс не открывается если в его адресе есть параметры. Почему - не понятно.

2. Сделать кнопку, вызывающую скрипт. В скрипте получить нужные значения, открыть ресурс с помощью метода window.showmodaldialog и передать туда эти параметры.
Но и тут тоже облом - клинит ClientGlobalContext.js.aspx.

Я просто в растерянности, где искать концы проблемы...
Старый 05.03.2012, 17:59   #11  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Цитата:
Сообщение от ZooY Посмотреть сообщение
2. Сделать кнопку, вызывающую скрипт. В скрипте получить нужные значения, открыть ресурс с помощью метода window.showmodaldialog и передать туда эти параметры.
Но и тут тоже облом - клинит ClientGlobalContext.js.aspx.
А если не использовать ClientGlobalContext.js.aspx? А с помощью JS выцеплять параметры из URL?
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 05.03.2012, 18:12   #12  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
А если не использовать ClientGlobalContext.js.aspx? А с помощью JS выцеплять параметры из URL?
Если не использовать ClientGlobalContext.js, то нужно использовать стандартный Silverlight.js, а значит его нужно тоже подключать как ресурс, но это костылизация уже получается... ClientGlobalContext, на сколько я понимаю, и создан как замена Silverlight.js + ряд дополнительных методов... Но вот его почему то клинит... гррр...
Старый 06.03.2012, 13:51   #13  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Нда... почему не работает веб-ресурс, если в него передать какие то параметры, стало понятно... вот
И кому только это в голову то пришло...
В общем вариант с передачей параметров прямо из CRM в ресурс можно считать не реализуемым... Остается JavaScript...
Старый 13.03.2012, 09:46   #14  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Thumbs up
В общем выкрутился так:
- создал по кнопке для формы объекта и списка,
- для каждой кнопки создал свое отдельное действие - открыть URL (мой SL-ресурс),
- в качестве параметра Data в случае с формой передаю CRM-параметр FirstPrimaryItemId (получаю ID текущей записи формы), а в случае со списком параметр SelectesControlSelectedItemIds (получаю список ID отмеченных записей)

Плюсы решения:
- оно работает
- все решено без использования JS чисто декларативно

Минусы:
- по двум местам размазаны настройки окна
- в моем случае не принципиально, но таким способом не передашь больше одного параметра
Старый 04.04.2012, 02:12   #15  
ZooY is offline
ZooY
Участник
Аватар для ZooY
 
379 / 46 (2) +++
Регистрация: 24.06.2008
Адрес: Россия, Москва
Еще один способ передачи параметров, в случае с диалоговым окном, может кому пригодиться...
http://www.buseng.ru/blog/2012/04/re...insilverlight/
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Кнопка в форме, изменяющая объекты: как лучше? ask Dynamics CRM: Разработка 4 19.08.2010 20:15
Получить список записей, к которым есть доступ Bondonello Dynamics CRM: Разработка 10 16.01.2010 00:55
Извлечение значения полей из атрибута на форме e.pasechny Dynamics CRM: Разработка 9 10.11.2009 13:44
Служебное поле, которого не должно быть на форме. tatra Dynamics CRM: Разработка 8 16.06.2008 15:02
Как сделать две одинаковые ссылки на одной форме? tatra Dynamics CRM: Разработка 5 21.09.2007 18:26

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 06:10.