Показать сообщение отдельно
Старый 29.09.2009, 11:06   #41  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Цитата:
Сообщение от 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);
После выполнения имею то, что на скрине, но обновления даты не происходит.
В чем может быть ошибка?
Судя по коду Вы неправильно формируете поле даты для запроса. Дата Должна быть примерно в таком формате - yyyy-MM-ddThh:mm:ss+(часовой пояс для UTC) например - 2009-12-30T00:00:00+02:00

Также обратил внимание на строчку

var contactId =GUID;

передаётето вы туда - массив, соответвенно по идее следовало бы использовать ориентировочно такую конструкицю - var contactId = GUID[0].id;
Но если ни одной записи не будет выделено - выполнение скрипта - вызовет исключение.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 29.09.2009 в 11:10.