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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.05.2010, 09:42   #1  
nibo is offline
nibo
Участник
 
6 / 10 (1) +
Регистрация: 28.05.2010
Внедрить интерфейс внешнего приложения.
Доброго всем дня, надеюсь что вопрос задаю не совсем глупый - в поиске просто ничего не нашел.
Задача следующая - нужно некоторым образом внедрить абсолютно кастомное решение в Dynamics CRM. Варианта, получается, два - iframe и кастомная форма.
Но обязательно, чтобы открывалась эта форма с листа самого CRM (нужен расширенный поиск).
Соответственно вопроса два:
1. Как заставить по DoubleClick на списке сущностей открыться форму другого приложения? Предполагая, что это невозможно. Тогда:
2. Если делать через iframe - как сделать так, чтобы нажатие кнопки "Сохранить" в исходной форме CRM вызывало в том числе отправку на сервер страницы, находящейся в iframe. Или вообще вопрос три:
3. Если и этого сделать нельзя, то как спрятать кнопку "сохранить" CRM-ной формы и заменить ее другой?
Старый 28.05.2010, 10:09   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Прошу прощения, вы бы сами себя поняли, если бы это прочитали? Вы хотите подменить системную форму какой-то сущности своей? Тогда вопрос для чего это нужно? Можно же просто продублировать поля второй системы и повесить на событие сохранения плагин, который сохранит нужные данные во второй системе. Обычно интеграция делается так.
Все же по вашим вопросам:
1. Можно попытаться заменить нужную страницу на сервере, но это лютый unsupport
2. Можно вставить обработчик события сохранения, который передаст все что нужно вашей системе
3. Это тоже можно, но это извращение еще хуже первых двух.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 28.05.2010, 10:18   #3  
nibo is offline
nibo
Участник
 
6 / 10 (1) +
Регистрация: 28.05.2010
Да,я сам понимаю, что написал очень непонятно. Но понятнее изьясниться я не смог, прощу прощения.

По вашему ответу - продублировать поля было запрещено, в этом и проблема. Потому что сущности ооооочень сложные, и запаримся в CRM и дублировать и хранить.

Так же понимаю, что лучший вариант - навесить обработчик события, это я и попытался провернуть. НО. Может я чего-то не понимаю, но я не смог по обработчику OnSave CRM-ной формы сделать что-то в iframe по той простой причине, что доступ к нему из JavaScript запрещен.
Старый 28.05.2010, 10:28   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Давайте добавим конкретики: что за сущности и для чего хранить их в CRM? Вы можете интегрировать сторонние страницы в структуру сайта CRM через ISV.config. В этом случае нигде ничего изменять не придется.
Доступ есть:
Код:
var frame = crmForm.all.IFRAME_имя;
var doc = frame.contentWindow.document;
// вот вам и HTML.DOM вашей страницы, делайте с ним что хотите.
Возможно вам потребуется в настройках самого фрейма снять галочку "запретить кросс-сайт скриптинг".
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 28.05.2010, 10:34   #5  
nibo is offline
nibo
Участник
 
6 / 10 (1) +
Регистрация: 28.05.2010
Сущностей будет несколько десятков. Суть в том, что пользователь должен работая с CRM видеть некое упрощенное представление этих сущностей (и должен работать расширенный поиск), но по двойному клику пользователь должен получать полную информацию о сущности. Дублировать начальство запретило - очень долго. Значит надо просматривать в CRM упрощенный список (2-3 важнейших поля), а по двойному клику поднимать внешнюю страницу. Поэтому надо внедрить уже готовое веб-решение внутрь CRM. А через contentWindow не получается достучаться - обрубается доступ. Полагаю что из-за того, что это приложение находится в домене, отличном от CRM.
Старый 28.05.2010, 11:33   #6  
dalaj is offline
dalaj
Участник
Аватар для dalaj
 
26 / 12 (1) ++
Регистрация: 14.09.2007
Адрес: Рига, Латвия
Цитата:
Полагаю что из-за того, что это приложение находится в домене, отличном от CRM
Поэтому и нужно отключить "restrict cross-frame scripting"
__________________

Последний раз редактировалось dalaj; 28.05.2010 в 11:36.
Старый 28.05.2010, 11:46   #7  
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
Цитата:
Сообщение от dalaj Посмотреть сообщение
Поэтому и нужно отключить "restrict cross-frame scripting"
Из своего опыта скажу, что это не поможет. При помощи JavaScript можно работать только со страницами этого же сайта. Если же домены различны - будет возникать ошибка 'Access is Denied' при попытке обратиться к содержимому странички, которая располагается в IFrame.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 28.05.2010, 11:48   #8  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Согласен, Cross Domain AJAX уже поддерживается Firefox, но стандартом это, кажется, станет только в HTML 5
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 28.05.2010, 11:55   #9  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Пришла идея: на OnLoad формы открываем нужную страницу window.open(...) и закрываем текущую: window.close(). Вроде должно работать
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 28.05.2010, 12:02   #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
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Пришла идея: на OnLoad формы открываем нужную страницу window.open(...) и закрываем текущую: window.close(). Вроде должно работать
Лучше уж тогда через редирект на онлоаде. Чтото вроде такого:
window.location = <Адрес страницы во внешней системе>;

Только вот как быть с рефрешем грида - непонятно...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 28.05.2010, 12:12   #11  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от a33ik Посмотреть сообщение
Лучше уж тогда через редирект на онлоаде. Чтото вроде такого:
window.location = <Адрес страницы во внешней системе>;

Только вот как быть с рефрешем грида - непонятно...
Данные будут заноситься в стороннюю систему, так что интеграция вряд ли успеет отработать быстрее чем обновится грид.

ps. Мне твой способ больше нравится
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional

Последний раз редактировалось Артем Enot Грунин; 28.05.2010 в 12:15.
Старый 28.05.2010, 12:30   #12  
nibo is offline
nibo
Участник
 
6 / 10 (1) +
Регистрация: 28.05.2010
Цитата:
Сообщение от a33ik Посмотреть сообщение
Из своего опыта скажу, что это не поможет. При помощи JavaScript можно работать только со страницами этого же сайта. Если же домены различны - будет возникать ошибка 'Access is Denied' при попытке обратиться к содержимому странички, которая располагается в IFrame.
Да, так и будет. Вариант с window.location не очень красив, и совсем не производителен. А скажите, пожалуйста, можно же физически различные машины объединить в один домен?
Старый 28.05.2010, 12:48   #13  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от nibo Посмотреть сообщение
Да, так и будет. Вариант с window.location не очень красив, и совсем не производителен.
Вы не правы, это наиболее элегантное и простое решение из возможных.
Цитата:
Сообщение от nibo Посмотреть сообщение
А скажите, пожалуйста, можно же физически различные машины объединить в один домен?
Не представляю как.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 28.05.2010, 12:57   #14  
nibo is offline
nibo
Участник
 
6 / 10 (1) +
Регистрация: 28.05.2010
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Вы не правы, это наиболее элегантное и простое решение из возможных.
Не представляю как.
Да они все уродские, если всерьез Но хочется все-таки элегантности.
Старый 28.05.2010, 13:01   #15  
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
Цитата:
Сообщение от nibo Посмотреть сообщение
А скажите, пожалуйста, можно же физически различные машины объединить в один домен?
Под одним доменом подразумевается, что Вы работаете в пределах одного вебсайта.

Цитата:
Сообщение от nibo Посмотреть сообщение
Да, так и будет. Вариант с window.location не очень красив, и совсем не производителен.
Если уж гонитесь за производительностью, то тогда можно попробовать 3 подхода:

1. На сервере открыть aspx страничку редактирования сущности с которой будет выполняться редирект и прописать там примерно следующий скрипт:

X++:
<script runat="server">

protected override void OnLoad( EventArgs e )
{
	if (< ,            >)
		Response.Redirect(<    >);
	else
		base.OnLoad(e); 
}
</script>
2. Интегрировать страницу, которая отображает грид с записями (\_root\homepage.aspx) в айфрейм на своей странице. В своей странице при помощи JavaScript подменить обработчик двойного клика по гриду по странице в IFrame. Полученную свою страницу при помощи SiteMap интегрировать в CRM.

Из недостатков - не будет такая схема работать например из Advanced Find окна.

3. Вписать скрипты редиректа непосредственно в страницу \_root\homepage.aspx.

PS всего этого я не пробовал, а просто делюсь идеями.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

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

Последний раз редактировалось a33ik; 28.05.2010 в 13:03.
Старый 28.05.2010, 13:14   #16  
nibo is offline
nibo
Участник
 
6 / 10 (1) +
Регистрация: 28.05.2010
Все равно ни один вариант не подходит, потому что нужна еще и сопровождаемость и расширенный поиск В любом случае спасибо большое за идеи - пойду ругаться с начальством о том, как все сделать по-человечески
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка открытия приложения у пользователей Camena Dynamics CRM: Администрирование 11 30.08.2012 15:20
Возможен ли различный интерфейс для разных подразделений? Dekan Dynamics CRM: Функционал 14 04.08.2009 22:02
Синхронизация с Outlook через веб интерфейс, без установленного Outlook клиента. Alberto Farinacci Dynamics CRM: Администрирование 2 22.07.2009 18:35
web интерфейс CRM3.0 Rayber Dynamics CRM: Администрирование 4 26.10.2007 15:54
Не могу отправить почту через веб-интерфейс Hungrymar Dynamics CRM: Администрирование 0 18.11.2006 09:44

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

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

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