26.11.2009, 11:06 | #1 |
Участник
|
Изменение статуса записи при помощи Javascript
Нужно сделать чтобы при изменении значения поля на определенное (предположим, на число 25) запись становилась "неактивной". Пробовал реализовать двумя способами, ни одним не получилось...
|
|
26.11.2009, 11:15 | #2 |
Чайный пьяница
|
Цитата:
Но рекомендовал бы это делать Post-Update плагином.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
26.11.2009, 11:17 | #3 |
Kostya Afendikov
|
Цитата:
|
|
01.12.2009, 15:28 | #4 |
Участник
|
У меня получился следующий SOAP - запрос:
// Prepare variables for updating a contact. var tripid = crmForm.ObjectId; var scode = 1; 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>"+ "<Update xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ "<entity xsi:type='new_business_trip'>"+ "<statecode>"+scode+"</statecode>"+ "<new_business_tripid>"+tripid+"</new_business_tripid>"+ "</entity>"+ "</Update>"+ "</soap:Body>"+ "</soap:Envelope>"; // Prepare the xmlHttpObject and send the request. var xHReq = new ActiveXObject("Msxml2.XMLHTTP"); xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false); xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Update"); 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); } // Display a confirmation message and open the updated contact. else { alert("Contact with id = "+tripid+" successfully updated."); } В результате запрос вроде как выполняется, но статус командировки не меняется |
|
01.12.2009, 15:34 | #5 |
Консультант-джедай
|
А страничку перезагружаете?
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
01.12.2009, 15:44 | #6 |
Участник
|
Ага.. Запрос правильно составлен? Чтобы запись стала неактивной нужно изменить только этот аттрибут?)
|
|
01.12.2009, 15:56 | #7 |
Чайный пьяница
|
Состояние записи сообщением Update не изменяется.
Для этого необходимо использовать SetState сообщение.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
01.12.2009, 16:14 | #8 |
Участник
|
т.е. нужно изменить данный SOAP запрос? Или он полностью неправильно составлен?
|
|
01.12.2009, 16:41 | #9 |
Участник
|
Вот тут библиотечка есть. С ее помощью легко сделать то, что вам нужно.
См. SetState Sample. Как вариант еще можно было бы написать свой web-сервис, который бы деактивировал запись и вызывать его так же AJAX'ом. И еще можно подсмотреть, какой скрипт вызывается при деактивации через меню. Но с этим лучше не связываться. |
|
01.12.2009, 16:45 | #10 |
Участник
|
Реализация при помощи плагина мне не подходит...
Цитата:
И еще можно подсмотреть, какой скрипт вызывается при деактивации через меню. Но с этим лучше не связываться.
|
|
01.12.2009, 16:57 | #11 |
Участник
|
Ну что значит как? Дебаггером!
Например, при деактивации Организации вызывается вот такая функция: changeState('deactivate', '1', '5'); Правда, она вызовет диалог подтверждения деактивации. Чтобы от него избавиться, надо будет залезть внутрь функции changeState и вырезать нужный кусок. Но это все дикий ансаппорт, поэтому и не советую связываться. |
|
02.12.2009, 09:20 | #12 |
Moderator
|
А вот я ими, напротив, не брезгую! Как-никак реализация самих разработчиков! Но ансапорт нужно особо чательно документировать, чтобы в случае чего можно было быстро обновить реализацию.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
|