04.03.2014, 17:23 | #1 |
Даёшь прямые руки!
|
CRM2011. Обновление поля одной сущности по условию из другой сущности.
Всем доброго времени дня!
Не смог грамотно сформулировать тему Товарищи, есть необходимость изменить значение определённого поля элементов одной сущности при условии наличия определённого значения в родительском элементе другой сущности. Есть 2 сущности с отношением N:1. Мне как-то нужно изменить определённое поле для элементов сущности с типом N если в родительской сущности определённому полю назначено нужное значение. В начале, я хотел сделать это через рабочий процесс, но к сожалению при создании рабочего процесса для родительской сущности я не могу выбрать нужную мне дочернюю сущность, подозреваю, что это из-за типа отношений между ними (БД особо не знаком). Думал как-то скрипт написать, но как это описать не могу понять. Быть может нужно как раз запрос сформировать к БД... Если есть идеи или опыт, прошу помочь |
|
04.03.2014, 17:49 | #2 |
Еда - топливо, Одежда - н
|
Если я Вас правильно понял, то можно сделать это бизнес-процессом стандартным.
Кейс - Есть Организация и контакт. Если в организации изменился номер телефона, то изменить номер и в контакте. Не обещаю что это красивое решение или оно лучшее и т.д. Но стандартными методами. 1. Создаем бизнес-процесс для дочерней сущности (та, которая - N) "в нашем случае - контакт" 2. Делаем шаг, на ожидание, и пишем туда условия по которым, для изменения "в организации" 3. После того как эти условия выполнятся, пишем логику что нам нужно дальше сделать. 4. И можем опять запустить этот же процесс. в самом процессе... таким способом получим бесконечный цикл 1. Минус - это процесс на ожидание. 2. Минус - их моет понадобиться несколько ... Вообщем одни минусы ) Есть вариант, взять разработчика и пусть пишет плагин.
__________________
Все что вам нужно - это мозК Еда - топливо... Одежда - необходимость... |
|
04.03.2014, 18:05 | #3 |
Даёшь прямые руки!
|
К сожалению, такой вариант не подходит по причине достаточно большого количества подобных изменений. Жаль у меня нету опыта написания скриптов которые умеют обращаются к БД. Мне кажется истина где-то там
|
|
04.03.2014, 18:21 | #4 |
Еда - топливо, Одежда - н
|
Цитата:
Плагин, вот что вас спасет. Цитата:
по причине достаточно большого количества подобных изменений.
Попробуйте написать реальный кейс, который вам нужно решить. С оригинальными названиями и т.д. Так будет легче.
__________________
Все что вам нужно - это мозК Еда - топливо... Одежда - необходимость... |
|
04.03.2014, 18:39 | #5 |
Участник
|
Если вам нужна односторонняя проверка то вам хватит и скрипта.
Если изменения тех атрибутов на связанной сущности должно влекти за собой изменения в всех дочерних зависящих от этого параметра то вам точно нужно плагин. Примеры JavaScript как писать запросы к соседней сущности есть в СДК к СРМ. И посмотрите на готовые библиотеки типа таких как CrmRestKit , XrmServiceToolkit или CrmFetchKit это для 2011 и 2013 ну а для 4.0 вам поможет только СДК и примеры с интернета. p.s. Перечитал еще раз и вам точно нужен плагин или поищите сборки шагов БП на codeplex. Последний раз редактировалось spectr; 04.03.2014 в 18:48. |
|
04.03.2014, 19:30 | #6 |
Даёшь прямые руки!
|
Я от своих слов и не отказываюсь. Поле одно. А вот элементов с этим полем много и изменяется это поле в элементах достаточно часто
|
|
04.03.2014, 19:34 | #7 |
Даёшь прямые руки!
|
Цитата:
Сообщение от spectr
Если вам нужна односторонняя проверка то вам хватит и скрипта.
Если изменения тех атрибутов на связанной сущности должно влекти за собой изменения в всех дочерних зависящих от этого параметра то вам точно нужно плагин. Примеры JavaScript как писать запросы к соседней сущности есть в СДК к СРМ. И посмотрите на готовые библиотеки типа таких как CrmRestKit , XrmServiceToolkit или CrmFetchKit это для 2011 и 2013 ну а для 4.0 вам поможет только СДК и примеры с интернета. p.s. Перечитал еще раз и вам точно нужен плагин или поищите сборки шагов БП на codeplex. |
|
05.03.2014, 01:20 | #8 |
Еда - топливо, Одежда - н
|
Цитата:
specrt этого заслуживает ))) Он знатный спец )
__________________
Все что вам нужно - это мозК Еда - топливо... Одежда - необходимость... |
|
07.03.2014, 16:52 | #9 |
Даёшь прямые руки!
|
Запилил . Может кому пригодится.
function dblookup() { var oppidObj=Xrm.Page.getAttribute("new_opportunity_id").getValue(); var oppid=oppidObj[0].id; var query= null; var subid= Xrm.Page.data.entity.getId(); if (subid ==null) { query= "xxx'"; } else { subid = modifyGUID(subid); oppid=modifyGUID(oppid); query = "ххх"; } var connection = new ActiveXObject("ADODB.Connection"); var connectionString = "xxx"; connection.Open(connectionString); //alert(connectionString); var rs = new ActiveXObject("ADODB.Recordset"); //alert(rs); //alert(query); rs.Open(query, connection, 1, 2); alert(rs); var matchingstate=0; if(!(rs.BOF && rs.EOF)) { rs.moveFirst(); alert(rs.Fields(0).Value); if (rs.Fields(0).Value!=null) { matchingstate = rs.Fields(0).Value; } } } function modifyGUID(str) { var retVar =str; retVar=retVar.slice(0,-1); retVar=retVar.slice(1); //retVar=retVar.toLowerCase(); return retVar; } Стринги для подключения и запросы к БД удалил. Этот вариант только под IE. и вот одна из ссылок которая помогла: http://snipplr.com/view/51134/sql-qu...ng-javascript/ Последний раз редактировалось andyandy; 07.03.2014 в 16:58. |
|
07.03.2014, 17:47 | #10 |
Чайный пьяница
|
Хотите стать специалистом - перестаньте писать такого рода код. Сказали же вам. Пользуйтесь тем, что дал Microsoft - вебсервисами CRM и тулкитами для упрощения работы с ними...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
07.03.2014, 17:57 | #11 |
Участник
|
этот скрипт очень и очень не безопасен !!!
вы грубо говоря дали пользователю логин и пароль от БД. теперь он с ней может делать что угодно. |
|
07.03.2014, 18:09 | #12 |
Чайный пьяница
|
Я бы сказал, что это незнание платформы и использование нерекомендуемых техник.
Такое. Зависит от того какой тип аутентификации использовался. Если виндовая, то никакого пароля там нет. Если аутентификация виндовая, то всё ограничится чтением из фильтрованных вьюх. Разве что пользователь в SQLPrivilegedGroup. Но в целом я согласен с коллегой.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 07.03.2014 в 18:13. |
|
11.03.2014, 17:35 | #13 |
Участник
|
Цитата:
Сообщение от a33ik
Такое. Зависит от того какой тип аутентификации использовался. Если виндовая, то никакого пароля там нет.
Если аутентификация виндовая, то всё ограничится чтением из фильтрованных вьюх. Разве что пользователь в SQLPrivilegedGroup. Суть дела не меняет и думаю на этом можно закрыть обсуждение |
|
11.03.2014, 18:57 | #14 |
Даёшь прямые руки!
|
Ого!
Похоже я ту ещё кашу замесил. И как мои культяпки кривые ещё по клаве клацают. Почитал про FetchXML и CrmFetchKit (как советовали), вроде годная штука. Постараюсь переписать код под него. Спасибо за критику. |
|
11.03.2014, 19:58 | #15 |
Участник
|
Посмотрите на это решение.
Думаю вам оно подойдет. |
|
|
За это сообщение автора поблагодарили: andyandy (1). |
12.03.2014, 11:31 | #16 |
Даёшь прямые руки!
|
Отлично! То, что нужно!
Уже успел проверить, всё работает. Всем спасибо за помощь! |
|