11.03.2013, 17:37 | #1 |
Участник
|
Вопрос по возвращению данных с помощью библиотеки Xrm.ServiceToolkit
Пытаюсь на форму получить значение пиклиста.
Для примера расскажу как я это делаю. В нашей СРМ системе с помощью действия кампании создаются массово звонки. Так вот в идеале хотелось бы на саму форму звонка подтянуть данные из самой кампании. Делаю все через действия кампании, дабы на звонке можно получить значение GUID действия кампании и как следствие GUID кампании. но не могу получить значение пиклиста который находится на форме Кампании. Каким образом с помощью вышеуказанной бибилиотечки возможно получить значение пиклиста. |
|
11.03.2013, 18:32 | #2 |
Moderator
|
Используйте функцию QueryByAttribute или Fetch. На форме звонка созданного из действия вы можете получить id действия кампании. Далее через QueryByAttribute вы можете запросить id кампании для известного id действия кампании. Далее аналогичным запросом вы можете получить любое нужное поле кампании по ее идентификатору. Используя функцию
Fetch вы можете получить интересующие вас данные одним запросом.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
11.03.2013, 23:45 | #3 |
Участник
|
Возможно значение пиклиста получаются как [имя поля].Value
в CRMRestKit это так. |
|
12.03.2013, 08:03 | #4 |
Участник
|
Спасибо за советы конечно, но это чуть чуть не совсем то что мне требуется. Я так понимаю что QueryByAttribute это уже C# разработка, а я таки пытаюсь все сделать через JS.
Если возможно сделать через C# то конечный продукт будет уже плагин? Плагин как раз решит почти все мои задачи. тут то и хотелось бы у вас проконсультироваться: Плагин необходимо будет настроить на Create событие звонка, при котором он будет получать все значения из Кампании - минуя действие кампании? |
|
12.03.2013, 10:12 | #5 |
Участник
|
Можно. Вам необходимо создать плагин на событие PreCreate сущности звонок. проверить, что звонок связан именно с кампанией и методом Retrieve получить кампанию.
Что касается ответа Артема, то метод в Xrm.ServiceToolkit существует. http://mmcrm.ru/?p=2004 Здесь описание на русском языке и метод, перечислен. так что можете использовать то, что Вам больше подходит. |
|
12.03.2013, 11:15 | #6 |
Участник
|
Методами Fetch и Retrive мне необходимо получить как раз таки текстовое значение выбранного пиклиста. Текстовые поля и ID из сущности получаю без проблем. Проблема с Пиклистом.
Хорошо, если не обойтись с помощью JS то как можно получить нужные значения с сущности кампания, находясь на форме Звонка. С Плагинами пока не разбирался, если вдруг подтолкнете или подскажете как реализовать, было бы здорово. С помощью SDK установил надстройку в VS 2010, и с ее помощью создаю плагин, но не разобрался с конструкцией логики работы. В Интернете много примеров создания плагинов не из надстройки. тут то и затруднения в написании. Если подскажете как и с чего начать, далее думаю разберусь сам .. |
|
12.03.2013, 11:30 | #7 |
Участник
|
Может Вам поможет это?
http://guruprasadcrm.blogspot.ru/201...ata-using.html http://danielcai.blogspot.ru/2011/07...r-toolkit.html Последний раз редактировалось g.Naukovych; 12.03.2013 в 12:36. |
|
12.03.2013, 15:52 | #8 |
Moderator
|
Цитата:
Сообщение от Space-06
Спасибо за советы конечно, но это чуть чуть не совсем то что мне требуется. Я так понимаю что QueryByAttribute это уже C# разработка, а я таки пытаюсь все сделать через JS.
Если возможно сделать через C# то конечный продукт будет уже плагин? Плагин как раз решит почти все мои задачи. тут то и хотелось бы у вас проконсультироваться: Плагин необходимо будет настроить на Create событие звонка, при котором он будет получать все значения из Кампании - минуя действие кампании?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
13.03.2013, 08:10 | #9 |
Участник
|
Я изучил эту библиотеку, и использую для добавления данных, для установки фильтрации лукапа и т.д.
Попробую перефразировать свой вопрос по другому: Для того чтоб получить какое либо значение используем вот такой запрос retrievedContact = XrmServiceToolkit.Soap.Retrieve("contact", contactId, cols); а получаем наши значения retrievedContact.attributes['middlename'].value а что если поле middlename - набор параметров или пиклист с кучей записей. на стандартной форме без этой библиотечки получить значение выбранного пиклиста можно Xrm.Page.data.entity.attributes.get("middlename").getText(); именно getText выводит значение. А XrmServiceToolkit.Soap.Retrieve выводит цифровое значение. я понимаю что с помощью плагина используя QueryByAttribute можно получить абсолютно любые данные. Может быть кто то сталкивался с получением как раз таки значения используя XrmServiceToolkit.Soap |
|
13.03.2013, 13:21 | #10 |
Участник
|
На форме текстовые значения для пиклистов уже есть, поэтому Вы можете их оттуда считать. Когда же вы считываете с crm другую сущность, неважно на C# или на javascript, и не важно с помощью какой библиотеки, в конечном счете вызывается метод Retrieve или RetrieveMultiple crm сервиса. А они не возвращают текстовые значения для пиклистов. Чтобы их получить нужно считать еще метаданные и в них по числу найти текст.
Чтобы считать метаданные с помощью Xrm.ServiceToolkit нужно воспользоваться методом Execute и выполнить с помощью него RetrieveEntityRequest. Пример как составить реквест можно посмотреть тут: http://mileyja.blogspot.ru/2011/05/h...or-entity.html |
|
14.03.2013, 09:41 | #11 |
Участник
|
Спасибо коллеги, все получается.
Хотел на последок уточнить такую информацию: в большинстве случаев у меня информация на форме обновляется на событии OnLoad с помощью скрипта, и необходимо перед самой работой данные на форму вытащить открывая и закрывая(с сохранением) . А возможно ли массово все эти данные таким образом обновить? Понимаю что в будущем эта задача решается плагином на событие pre Create. А в данной ситуации каким то образом возможно выполнить для массовой обработки? |
|
15.03.2013, 13:26 | #12 |
Участник
|
Нужно методом RetrieveMultiple вытащить все необходимые сущности, пройтись по ним циклом, для каждой посчитать нужные поля и сохранить изменения методом Update
|
|
15.03.2013, 18:00 | #13 |
Moderator
|
Для подобных целей рекомендуется использовать плагины (серверный код).
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
19.03.2013, 09:51 | #14 |
Заноза в заднице
|
Это может жестко стукнуть по производительности, поэтому такие процедуры настоятельно рекомендуют выполнять асинхронно на сервере.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
19.03.2013, 15:55 | #15 |
Чайный пьяница
|
Цитата:
Цитата:
Ну и стукнет. Аж 1 раз, когда надо будет обновить данные. Собственно всё.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 19.03.2013 в 16:19. |
|
|
За это сообщение автора поблагодарили: Anros (1). |
|
|