|  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 | 
|  | 
|  | 
| 
 |