19.07.2012, 09:33 | #1 |
Участник
|
CRM 2011, диалоги (ajax?)
товарищи!
подскажите, пожалуйста. имеется: crm с настроенной связью с внешним веб-сервисом нужно: сделать диалог, который бы запускался по кнопке на форме, брал бы данные с формы этой сущности, спрашивал пользователя дополнительные данные и передавал все эти данные веб-сервису. посоветуйте, пожалуйста, чем воспользоваться? если можно, с ссылками на примеры спасибо! |
|
19.07.2012, 10:08 | #2 |
Участник
|
Вам нужно сделать либо ASPX страницу, либо использовать Silverlight. Трудоемкость примерно одинаковая, зависит скорее от того, с чем вы лучше знакомы.
Вот ссылка по созданию ASPX страницы, которая подключается к CRM: http://blogs.msdn.com/b/crminthefiel...b-service.aspx |
|
|
За это сообщение автора поблагодарили: mistah (1). |
19.07.2012, 10:17 | #3 |
Участник
|
griefon, благодарю!
буду разбираться |
|
24.07.2012, 18:10 | #4 |
Участник
|
в итоге я решил попробовать сначала через модальные диалоги и веб ресурсы, но столкнулся со следующим:
при открытии диалога мне нужно заполнить диалог данными с родительской сущности, а потом передать туда данные ответа пользователя, но на любой вариант обращения к родительской сущности диалог сообщает, что это есть NULL подскажите, пожалуйста, как правильно обратиться с родительскому окну из дочернего в срм? пробовал не через модальные диалоги, а просто window.open и через window.opener обращаться - та же история кучу примеров в интернете нашел, но в моем случае, они не работают, например, описанный тут метод http://bingsoft.wordpress.com/2010/1...e-in-crm-2011/ cпасибо! |
|
25.07.2012, 10:16 | #5 |
Участник
|
Цитата:
Железобетонный вариант - передать все что нужно в параметрах при вызове странички, либо передать только id родительской записи, а внутри странички ее "ретривить" и получать что нужно. |
|
|
За это сообщение автора поблагодарили: mistah (1). |
25.07.2012, 11:03 | #6 |
Участник
|
Borisvil, благодарю!
а можно ссылку на пример? или на моем примере: у меня есть веб ресурс new_page вызываю я его так: window.open("http://xxx/WebResources/new_page",""); и у меня есть переменная iid, как мне передать её этому вебресурсу и принять это значение вебресуром? сам вебресурс: X++: <HTML><HEAD><TITLE></TITLE> <SCRIPT type=text/javascript src="../ClientGlobalContext.js.aspx"></SCRIPT> <SCRIPT type=text/javascript src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.1.min.js"></SCRIPT> <LINK rel=stylesheet type=text/css href="/_common/styles/fonts.css.aspx?lcid=1033"><LINK><LINK rel=stylesheet type=text/css href="/_common/styles/global.css.aspx?lcid=1033"><LINK><LINK rel=stylesheet type=text/css href="/_common/styles/select.css.aspx?lcid=1033"><LINK> <META charset=utf-8></HEAD> <BODY style="BORDER-RIGHT-WIDTH: 7px; BACKGROUND-COLOR: rgb(246,248,250); MARGIN: 0px; PADDING-LEFT: 7px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px" contentEditable=true><SPAN> <P> <SPAN> </P></SPAN></IMG> <P><INPUT value=_ ="id=textfield"> <P> </P></BODY></HTML> |
|
25.07.2012, 11:31 | #7 |
Участник
|
замечание по реализации.
уже сам несколько раз сталкивался. вы хардкодите адрес сервера. Завтра заказчик захочет подключаться по внешнему адресу и все это весело упадет. в адресе страницы передайте параметры методом get. window.open("http://xxx/WebResources/new_page?iid = 123456",""); на онлоаде вашей страницы получите это значение и впишите его. |
|
|
За это сообщение автора поблагодарили: mistah (1). |
25.07.2012, 11:50 | #8 |
Участник
|
http://ms-dynamics-crm.com.ua/2009/0...soft-crm-form/
Если вкратце, то первый параметр должен идти после знака вопрос, следующие через &. Вызывать лучше из скрипта, который запустится по вашей кнопке, а не напрямую. Тогда и передать все что угодно сможете в параметры Как-то так: X++: var serverUrl = Xrm.Page.context.getServerUrl(); if (serverUrl.match(/\/$/)) { serverUrl = serverUrl.substring(0, serverUrl.length - 1); } var emailId = window.showModalDialog(serverUrl + "/webapp?oId="+Xrm.Page.data.entity.getId()+"&oType="+type); X++: string sId = Request.QueryString["oId"]; |
|
|
За это сообщение автора поблагодарили: mistah (1). |
25.07.2012, 12:14 | #9 |
Участник
|
А где страница aspx будет находиться?
В ISV ее нельзя размещать. это UnSupport |
|
25.07.2012, 13:42 | #10 |
Участник
|
g.Naukovych, да, спасибо, про сервер абсолютно верно подмечено
X++: |
|
25.07.2012, 13:42 | #11 |
Участник
|
Borisvil, спасибо, посмотрю!
|
|
25.07.2012, 15:41 | #12 |
Участник
|
Цитата:
X++: <SCRIPT type=text/javascript> function getQuerystring(key, default_) { if (default_ == null) default_=""; key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); var regex = new RegExp("[\\?&]"+key+"=([^&#]*)"); var qs = regex.exec(window.location.href); if(qs == null) return default_; else return qs[1]; } window.onload = function () { id = getQuerystring('id', null); } </SCRIPT> |
|
|
За это сообщение автора поблагодарили: mistah (1). |
25.07.2012, 16:50 | #13 |
Участник
|
g.Naukovych, благодарю!
возникла следующая ситуация - передаю ссылку с параметром, при автооткрытии на онлоаде формы пишет ошибка 404 если вставить ссылку в адресную строку окна - открывается, как надо window.open("url",""); url, по сути, равен "http://xxx/WebResources/new_page?iid = 123456" почему так может быть? |
|
26.07.2012, 13:04 | #14 |
Участник
|
ASPX в CRM2011 не поддерживается и от того приходится мудрить при его использовании, я в соседней ветке как раз вчера писал как.
|
|
|
За это сообщение автора поблагодарили: mistah (1). |
26.07.2012, 13:54 | #15 |
Участник
|
Цитата:
Сообщение от mistah
g.Naukovych, благодарю!
возникла следующая ситуация - передаю ссылку с параметром, при автооткрытии на онлоаде формы пишет ошибка 404 если вставить ссылку в адресную строку окна - открывается, как надо window.open("url",""); url, по сути, равен "http://xxx/WebResources/new_page?iid = 123456" почему так может быть? как Вы положили aspx в веб-ресуры? Ресурс это скрипт, стиль html, страница .. aspx там нет |
|
|
За это сообщение автора поблагодарили: mistah (1). |
09.08.2012, 11:09 | #16 |
Участник
|
Цитата:
как Вы положили aspx в веб-ресуры?
Ресурс это скрипт, стиль html, страница .. aspx там нет с этим я разобрался, но теперь следующая проблема: я из ресурса пытаюсь soap-запросом получить данные и получаю ошибку. с формы любой сущности запрос отрабатывает, как надо. подскажите, пожалуйста, в чем дело может быть? функция из html-ресурса, ей я передаю id, хочу получить атрибут сущности с этим id X++: function parsedatabyid(id) { alert(id); var mass = document.createElement("p"); mass.innerText = id; document.body.appendChild(mass); //var CrmURL = "http://" + document.location.hostname + ":" + document.location.port; //alert(CrmUrl); //var authenticationHeader = GenerateAuthenticationHeader(); // Prepare the SOAP message. var xml = "<?xml version='1.0' encoding='utf-8'?>"+ "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'"+ " xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'"+ " xmlns:xsd='http://www.w3.org/2001/XMLSchema'>"+ //authenticationHeader+ "<soap:Body>"+ "<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ "<entityName>new_pp321</entityName>"+ "<id>"+id+"</id>"+ "<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+ "<q1:Attributes>"+ "<q1:Attribute>new_name</q1:Attribute>"+ "</q1:Attributes>"+ "</columnSet>"+ "</Retrieve>"+ "</soap:Body>"+ "</soap:Envelope>"; // Prepare the xmlHttpObject and send the request. var xHReq = new ActiveXObject("Msxml2.XMLHTTP"); xHReq.Open("POST", "http://vccrm-1.xxx:8888/mscrmservices/2007/CrmService.asmx", false); xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve"); xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); xHReq.setRequestHeader("Content-Length", xml.length); xHReq.send(xml); // Capture the result. var resultXml = xHReq.responseXML; // Check for errors. var errorCount = resultXml.selectNodes('//error').length; if (errorCount != 0) { var msg = resultXml.selectSingleNode('//description').nodeTypedValue; alert(msg +"e"); } // Display the retrieved value. else { resu = resultXml.selectSingleNode("//q1:new_name").nodeTypedValue; alert(resu); } } ошибка вылетает на строке xHReq.send(xml); |
|
09.08.2012, 16:23 | #17 |
Участник
|
Цитата:
Вы можете спокойно писать на C# и использовать все, что дают стандартные сборки SDK - retrieve, entity и т.д. |
|
|
|