|
29.09.2009, 11:01 | #1 |
Участник
|
Значит так: написал на основе данного запроса функцию по обновлению атрибута new_data в сущности new_web по нажатию на кнопку.
Далее привожу код функции: Код: //Обновление даты function SetAttributeValueFromID(sEntityName, GUID)
 {
 var contactId =GUID; var data = (new Date()).getDate()+'/'+(new Date()).getMonth()+'/'+(new Date()).getYear()+' '+(new Date()).getHours()+':'+(new Date()).getMinutes(); var authenticationHeader = GenerateAuthenticationHeader();
 // Prepare the SOAP message.
 var xml = '';
 xml = 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 запроса. '<soap:Body>'+
 //Обновление атрибута '<Update xmlns=\'http://schemas.microsoft.com/crm/2007/WebServices\'>'+ '<entity xsi:type=sEntityName>'+ '<new_data>\'+data+\'</new_data>'+ '<contactid>\'+contactId+\'</contactid>'+ '</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 = '+contactId+' successfully updated.'); window.open('/sfa/conts/edit.aspx?id={'+contactId+'}'); } } var a = getSelected('crmGrid'); 
 SetAttributeValueFromID('new_web', a); В чем может быть ошибка? |
|
29.09.2009, 11:06 | #2 |
Чайный пьяница
|
Цитата:
Сообщение от Tarasov E
Значит так: написал на основе данного запроса функцию по обновлению атрибута new_data в сущности new_web по нажатию на кнопку.
Далее привожу код функции: Код: //Обновление даты function SetAttributeValueFromID(sEntityName, GUID)
 {
 var contactId =GUID; var data = (new Date()).getDate()+'/'+(new Date()).getMonth()+'/'+(new Date()).getYear()+' '+(new Date()).getHours()+':'+(new Date()).getMinutes(); var authenticationHeader = GenerateAuthenticationHeader();
 // Prepare the SOAP message.
 var xml = '';
 xml = 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 запроса. '<soap:Body>'+
 //Обновление атрибута '<Update xmlns=\'http://schemas.microsoft.com/crm/2007/WebServices\'>'+ '<entity xsi:type=sEntityName>'+ '<new_data>\'+data+\'</new_data>'+ '<contactid>\'+contactId+\'</contactid>'+ '</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 = '+contactId+' successfully updated.'); window.open('/sfa/conts/edit.aspx?id={'+contactId+'}'); } } var a = getSelected('crmGrid'); 
 SetAttributeValueFromID('new_web', a); В чем может быть ошибка? Также обратил внимание на строчку var contactId =GUID; передаётето вы туда - массив, соответвенно по идее следовало бы использовать ориентировочно такую конструкицю - var contactId = GUID[0].id; Но если ни одной записи не будет выделено - выполнение скрипта - вызовет исключение.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 29.09.2009 в 11:10. |
|
29.09.2009, 11:53 | #3 |
Участник
|
Цитата:
А разве аллертом не id выводится на скрине? |
|
29.09.2009, 12:09 | #4 |
Чайный пьяница
|
Цитата:
Для данного конкретного случая - не тестировал, но если показывает, следовательно отработало. А что будет в ситуации, если не выделено ни одной записи (пустой грид - ни одной записи) или выделено несколько записей. Уверены, что код поведёт себя корректно? Я - не очень. Моё дело обратить Ваше внимание, Ваше дело - прислушаться или проигнорировать
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
29.09.2009, 13:47 | #5 |
Участник
|
Цитата:
Сообщение от a33ik
Как раз имеет значение какой формат. Ознакомьтесь.
Возможно я не правильно выразился: если бы обновляемое поле имело бы тип datetime, тогда да, формат в котором передается дата имел бы значение. Но в поле типа text почему я не могу передать дату в том формате в котором надо мне? да и не обязательно дату. Если даже я пытаюсь передать строковую значение, то все равно поле не обновляется. Кстати по поводу обновления, оно должно отобразиться после обновления страницы? |
|
29.09.2009, 14:05 | #6 |
Чайный пьяница
|
Цитата:
Сообщение от Tarasov E
Ознакомился.
Возможно я не правильно выразился: если бы обновляемое поле имело бы тип datetime, тогда да, формат в котором передается дата имел бы значение. Но в поле типа text почему я не могу передать дату в том формате в котором надо мне? да и не обязательно дату. Если даже я пытаюсь передать строковую значение, то все равно поле не обновляется. Кстати по поводу обновления, оно должно отобразиться после обновления страницы? Код: '<entity xsi:type=sEntityName>'+ '<new_data>\'+data+\'</new_data>'+ '<contactid>\'+contactId+\'</contactid>'+ Код: '<entity xsi:type=sEntityName>'+ Код: '<entity xsi:type=\''+sEntityName + '\'>'+ Код: '<contactid>\'+contactId+\'</contactid>'+ Код: '<' + sEntityName +'id>\'+contactId+\'</' +sEntityName+ 'id>'+
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: Tarasov E (1). |
29.09.2009, 15:13 | #7 |
Участник
|
Большое спасибо! Исправил - заработало
|
|
|
|