28.05.2010, 09:42 | #1 |
Участник
|
Внедрить интерфейс внешнего приложения.
Доброго всем дня, надеюсь что вопрос задаю не совсем глупый - в поиске просто ничего не нашел.
Задача следующая - нужно некоторым образом внедрить абсолютно кастомное решение в Dynamics CRM. Варианта, получается, два - iframe и кастомная форма. Но обязательно, чтобы открывалась эта форма с листа самого CRM (нужен расширенный поиск). Соответственно вопроса два: 1. Как заставить по DoubleClick на списке сущностей открыться форму другого приложения? Предполагая, что это невозможно. Тогда: 2. Если делать через iframe - как сделать так, чтобы нажатие кнопки "Сохранить" в исходной форме CRM вызывало в том числе отправку на сервер страницы, находящейся в iframe. Или вообще вопрос три: 3. Если и этого сделать нельзя, то как спрятать кнопку "сохранить" CRM-ной формы и заменить ее другой? |
|
28.05.2010, 10:09 | #2 |
Moderator
|
Прошу прощения, вы бы сами себя поняли, если бы это прочитали? Вы хотите подменить системную форму какой-то сущности своей? Тогда вопрос для чего это нужно? Можно же просто продублировать поля второй системы и повесить на событие сохранения плагин, который сохранит нужные данные во второй системе. Обычно интеграция делается так.
Все же по вашим вопросам: 1. Можно попытаться заменить нужную страницу на сервере, но это лютый unsupport 2. Можно вставить обработчик события сохранения, который передаст все что нужно вашей системе 3. Это тоже можно, но это извращение еще хуже первых двух.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
28.05.2010, 10:18 | #3 |
Участник
|
Да,я сам понимаю, что написал очень непонятно. Но понятнее изьясниться я не смог, прощу прощения.
По вашему ответу - продублировать поля было запрещено, в этом и проблема. Потому что сущности ооооочень сложные, и запаримся в CRM и дублировать и хранить. Так же понимаю, что лучший вариант - навесить обработчик события, это я и попытался провернуть. НО. Может я чего-то не понимаю, но я не смог по обработчику OnSave CRM-ной формы сделать что-то в iframe по той простой причине, что доступ к нему из JavaScript запрещен. |
|
28.05.2010, 10:28 | #4 |
Moderator
|
Давайте добавим конкретики: что за сущности и для чего хранить их в 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 |
Участник
|
Сущностей будет несколько десятков. Суть в том, что пользователь должен работая с CRM видеть некое упрощенное представление этих сущностей (и должен работать расширенный поиск), но по двойному клику пользователь должен получать полную информацию о сущности. Дублировать начальство запретило - очень долго. Значит надо просматривать в CRM упрощенный список (2-3 важнейших поля), а по двойному клику поднимать внешнюю страницу. Поэтому надо внедрить уже готовое веб-решение внутрь CRM. А через contentWindow не получается достучаться - обрубается доступ. Полагаю что из-за того, что это приложение находится в домене, отличном от CRM.
|
|
28.05.2010, 11:33 | #6 |
Участник
|
Цитата:
Полагаю что из-за того, что это приложение находится в домене, отличном от CRM
__________________
Последний раз редактировалось dalaj; 28.05.2010 в 11:36. |
|
28.05.2010, 11:46 | #7 |
Чайный пьяница
|
Из своего опыта скажу, что это не поможет. При помощи JavaScript можно работать только со страницами этого же сайта. Если же домены различны - будет возникать ошибка 'Access is Denied' при попытке обратиться к содержимому странички, которая располагается в IFrame.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
28.05.2010, 11:48 | #8 |
Moderator
|
Согласен, Cross Domain AJAX уже поддерживается Firefox, но стандартом это, кажется, станет только в HTML 5
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
28.05.2010, 11:55 | #9 |
Moderator
|
Пришла идея: на OnLoad формы открываем нужную страницу window.open(...) и закрываем текущую: window.close(). Вроде должно работать
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
28.05.2010, 12:02 | #10 |
Чайный пьяница
|
Цитата:
window.location = <Адрес страницы во внешней системе>; Только вот как быть с рефрешем грида - непонятно...
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
28.05.2010, 12:12 | #11 |
Moderator
|
Цитата:
ps. Мне твой способ больше нравится
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional Последний раз редактировалось Артем Enot Грунин; 28.05.2010 в 12:15. |
|
28.05.2010, 12:30 | #12 |
Участник
|
Да, так и будет. Вариант с window.location не очень красив, и совсем не производителен. А скажите, пожалуйста, можно же физически различные машины объединить в один домен?
|
|
28.05.2010, 12:48 | #13 |
Moderator
|
Цитата:
Не представляю как.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
28.05.2010, 12:57 | #14 |
Участник
|
|
|
28.05.2010, 13:01 | #15 |
Чайный пьяница
|
Цитата:
Цитата:
1. На сервере открыть aspx страничку редактирования сущности с которой будет выполняться редирект и прописать там примерно следующий скрипт: X++: <script runat="server"> protected override void OnLoad( EventArgs e ) { if (< , >) Response.Redirect(< >); else base.OnLoad(e); } </script> Из недостатков - не будет такая схема работать например из Advanced Find окна. 3. Вписать скрипты редиректа непосредственно в страницу \_root\homepage.aspx. PS всего этого я не пробовал, а просто делюсь идеями.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 28.05.2010 в 13:03. |
|
28.05.2010, 13:14 | #16 |
Участник
|
Все равно ни один вариант не подходит, потому что нужна еще и сопровождаемость и расширенный поиск В любом случае спасибо большое за идеи - пойду ругаться с начальством о том, как все сделать по-человечески
|
|