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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.03.2014, 17:23   #1  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
CRM2011. Обновление поля одной сущности по условию из другой сущности.
Всем доброго времени дня!
Не смог грамотно сформулировать тему
Товарищи, есть необходимость изменить значение определённого поля элементов одной сущности при условии наличия определённого значения в родительском элементе другой сущности.
Есть 2 сущности с отношением N:1. Мне как-то нужно изменить определённое поле для элементов сущности с типом N если в родительской сущности определённому полю назначено нужное значение.
В начале, я хотел сделать это через рабочий процесс, но к сожалению при создании рабочего процесса для родительской сущности я не могу выбрать нужную мне дочернюю сущность, подозреваю, что это из-за типа отношений между ними (БД особо не знаком).
Думал как-то скрипт написать, но как это описать не могу понять. Быть может нужно как раз запрос сформировать к БД...
Если есть идеи или опыт, прошу помочь
Старый 04.03.2014, 17:49   #2  
-O_o- is offline
-O_o-
Еда - топливо, Одежда - н
Аватар для -O_o-
Лучший по профессии 2015
Лучший по профессии 2014
 
727 / 80 (4) ++++
Регистрация: 11.05.2012
Адрес: Киев
Если я Вас правильно понял, то можно сделать это бизнес-процессом стандартным.
Кейс - Есть Организация и контакт.
Если в организации изменился номер телефона, то изменить номер и в контакте.
Не обещаю что это красивое решение или оно лучшее и т.д. Но стандартными методами.
1. Создаем бизнес-процесс для дочерней сущности (та, которая - N) "в нашем случае - контакт"
2. Делаем шаг, на ожидание, и пишем туда условия по которым, для изменения "в организации"
3. После того как эти условия выполнятся, пишем логику что нам нужно дальше сделать.
4. И можем опять запустить этот же процесс. в самом процессе...
таким способом получим бесконечный цикл
1. Минус - это процесс на ожидание.
2. Минус - их моет понадобиться несколько ...
Вообщем одни минусы )
Есть вариант, взять разработчика и пусть пишет плагин.
__________________
Все что вам нужно - это мозК
Еда - топливо... Одежда - необходимость...
Старый 04.03.2014, 18:05   #3  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
К сожалению, такой вариант не подходит по причине достаточно большого количества подобных изменений. Жаль у меня нету опыта написания скриптов которые умеют обращаются к БД. Мне кажется истина где-то там
Старый 04.03.2014, 18:21   #4  
-O_o- is offline
-O_o-
Еда - топливо, Одежда - н
Аватар для -O_o-
Лучший по профессии 2015
Лучший по профессии 2014
 
727 / 80 (4) ++++
Регистрация: 11.05.2012
Адрес: Киев
Цитата:
Сообщение от andyandy Посмотреть сообщение
К сожалению, такой вариант не подходит по причине достаточно большого количества подобных изменений. Жаль у меня нету опыта написания скриптов которые умеют обращаются к БД. Мне кажется истина где-то там
JS тут вам не поможет... Вернее он то может помочь, но уж слишком это не правильное решение.
Плагин, вот что вас спасет.

Цитата:
по причине достаточно большого количества подобных изменений.
вы же сказали что одно всего лишь поле... или уже несколько полей?
Попробуйте написать реальный кейс, который вам нужно решить. С оригинальными названиями и т.д. Так будет легче.
__________________
Все что вам нужно - это мозК
Еда - топливо... Одежда - необходимость...
Старый 04.03.2014, 18:39   #5  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Если вам нужна односторонняя проверка то вам хватит и скрипта.
Если изменения тех атрибутов на связанной сущности должно влекти за собой изменения в всех дочерних зависящих от этого параметра то вам точно нужно плагин.

Примеры JavaScript как писать запросы к соседней сущности есть в СДК к СРМ.
И посмотрите на готовые библиотеки типа таких как CrmRestKit , XrmServiceToolkit или CrmFetchKit это для 2011 и 2013 ну а для 4.0 вам поможет только СДК и примеры с интернета.

p.s. Перечитал еще раз и вам точно нужен плагин или поищите сборки шагов БП на codeplex.

Последний раз редактировалось spectr; 04.03.2014 в 18:48.
Старый 04.03.2014, 19:30   #6  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Я от своих слов и не отказываюсь. Поле одно. А вот элементов с этим полем много и изменяется это поле в элементах достаточно часто
Старый 04.03.2014, 19:34   #7  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Цитата:
Сообщение от spectr Посмотреть сообщение
Если вам нужна односторонняя проверка то вам хватит и скрипта.
Если изменения тех атрибутов на связанной сущности должно влекти за собой изменения в всех дочерних зависящих от этого параметра то вам точно нужно плагин.

Примеры JavaScript как писать запросы к соседней сущности есть в СДК к СРМ.
И посмотрите на готовые библиотеки типа таких как CrmRestKit , XrmServiceToolkit или CrmFetchKit это для 2011 и 2013 ну а для 4.0 вам поможет только СДК и примеры с интернета.

p.s. Перечитал еще раз и вам точно нужен плагин или поищите сборки шагов БП на codeplex.
Спасибо за подсказку, на Codeplex конечно лазил правда не особо внимательно изучал тамошние решения. Буду продолжать изучать вопрос.
Старый 05.03.2014, 01:20   #8  
-O_o- is offline
-O_o-
Еда - топливо, Одежда - н
Аватар для -O_o-
Лучший по профессии 2015
Лучший по профессии 2014
 
727 / 80 (4) ++++
Регистрация: 11.05.2012
Адрес: Киев
Цитата:
Сообщение от andyandy Посмотреть сообщение
Спасибо за подсказку, на Codeplex конечно лазил правда не особо внимательно изучал тамошние решения. Буду продолжать изучать вопрос.
благодарите тех,кто вам помог )))
specrt этого заслуживает ))) Он знатный спец )
__________________
Все что вам нужно - это мозК
Еда - топливо... Одежда - необходимость...
Старый 07.03.2014, 16:52   #9  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Запилил . Может кому пригодится.

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  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Хотите стать специалистом - перестаньте писать такого рода код. Сказали же вам. Пользуйтесь тем, что дал Microsoft - вебсервисами CRM и тулкитами для упрощения работы с ними...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 07.03.2014, 17:57   #11  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
этот скрипт очень и очень не безопасен !!!
вы грубо говоря дали пользователю логин и пароль от БД.
теперь он с ней может делать что угодно.
Старый 07.03.2014, 18:09   #12  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от spectr Посмотреть сообщение
этот скрипт очень и очень не безопасен !!!
Я бы сказал, что это незнание платформы и использование нерекомендуемых техник.

Цитата:
Сообщение от spectr Посмотреть сообщение
вы грубо говоря дали пользователю логин и пароль от БД.
Такое. Зависит от того какой тип аутентификации использовался. Если виндовая, то никакого пароля там нет.

Цитата:
Сообщение от spectr Посмотреть сообщение
теперь он с ней может делать что угодно.
Если аутентификация виндовая, то всё ограничится чтением из фильтрованных вьюх. Разве что пользователь в SQLPrivilegedGroup.

Но в целом я согласен с коллегой.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 07.03.2014 в 18:13.
Старый 11.03.2014, 17:35   #13  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Цитата:
Сообщение от a33ik Посмотреть сообщение
Такое. Зависит от того какой тип аутентификации использовался. Если виндовая, то никакого пароля там нет.

Если аутентификация виндовая, то всё ограничится чтением из фильтрованных вьюх. Разве что пользователь в SQLPrivilegedGroup.
Если теоретически предположить то по условию задачи у пользователя должны быть права на изменения , а по умолчанию пользователи СРМ не являются пользователя SQL а добавлять их всех и давать им права думаю было лень потому там строка конекта с логином и паролем деплоя.

Суть дела не меняет и думаю на этом можно закрыть обсуждение
Старый 11.03.2014, 18:57   #14  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Ого!
Похоже я ту ещё кашу замесил. И как мои культяпки кривые ещё по клаве клацают.
Почитал про FetchXML и CrmFetchKit (как советовали), вроде годная штука. Постараюсь переписать код под него.
Спасибо за критику.
Старый 11.03.2014, 19:58   #15  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Посмотрите на это решение.
Думаю вам оно подойдет.
За это сообщение автора поблагодарили: andyandy (1).
Старый 12.03.2014, 11:31   #16  
andyandy is offline
andyandy
Даёшь прямые руки!
 
36 / 10 (1) +
Регистрация: 06.02.2014
Отлично! То, что нужно!
Уже успел проверить, всё работает.
Всем спасибо за помощь!
Теги
crm, связь 1:n, crm2011

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Два лукапа одной сущности Likefire Dynamics CRM: Функционал 12 01.02.2018 01:35
Создание одной записи на основании другой ZooY Dynamics CRM: Разработка 1 26.07.2010 08:14
Перенос бизнеес-процессов с одной сущности на другую guenberg Dynamics CRM: Разработка 4 08.06.2010 17:09
Проверка на уникальность поля сущности datfi Dynamics CRM: Разработка 7 01.12.2009 11:53
Изменение значения поля сущности по расписанию xmarina Dynamics CRM: Разработка 11 15.05.2009 23:00

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

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

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