AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.09.2009, 11:01   #1  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Значит так: написал на основе данного запроса функцию по обновлению атрибута 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  
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.
Старый 29.09.2009, 11:53   #3  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Цитата:
Сообщение от a33ik Посмотреть сообщение
Судя по коду Вы неправильно формируете поле даты для запроса. Дата Должна быть примерно в таком формате - yyyy-MM-ddThh:mm:ss+(часовой пояс для UTC) например - 2009-12-30T00:00:00+02:00
В данном случае тип поля - текст, и формат, в котором передается дата значения я думаю не имеет, тем более что в это поле уже добавлял данные из формы самой.

Цитата:
Сообщение от a33ik Посмотреть сообщение
var contactId =GUID;
передаётето вы туда - массив, соответвенно по идее следовало бы использовать ориентировочно такую конструкицю - var contactId = GUID[0].id;
Но если ни одной записи не будет выделено - выполнение скрипта - вызовет исключение.
А разве аллертом не id выводится на скрине?
Старый 29.09.2009, 12:09   #4  
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 Посмотреть сообщение
В данном случае тип поля - текст, и формат, в котором передается дата значения я думаю не имеет, тем более что в это поле уже добавлял данные из формы самой.
Как раз имеет значение какой формат. Ознакомьтесь.

Цитата:
Сообщение от Tarasov E Посмотреть сообщение
А разве аллертом не id выводится на скрине?
Для данного конкретного случая - не тестировал, но если показывает, следовательно отработало. А что будет в ситуации, если не выделено ни одной записи (пустой грид - ни одной записи) или выделено несколько записей. Уверены, что код поведёт себя корректно? Я - не очень. Моё дело обратить Ваше внимание, Ваше дело - прислушаться или проигнорировать
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 29.09.2009, 13:47   #5  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Цитата:
Сообщение от a33ik Посмотреть сообщение
Как раз имеет значение какой формат. Ознакомьтесь.
Ознакомился.
Возможно я не правильно выразился: если бы обновляемое поле имело бы тип datetime, тогда да, формат в котором передается дата имел бы значение. Но в поле типа text почему я не могу передать дату в том формате в котором надо мне? да и не обязательно дату. Если даже я пытаюсь передать строковую значение, то все равно поле не обновляется. Кстати по поводу обновления, оно должно отобразиться после обновления страницы?
Старый 29.09.2009, 14:05   #6  
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 Посмотреть сообщение
Ознакомился.
Возможно я не правильно выразился: если бы обновляемое поле имело бы тип datetime, тогда да, формат в котором передается дата имел бы значение. Но в поле типа text почему я не могу передать дату в том формате в котором надо мне? да и не обязательно дату. Если даже я пытаюсь передать строковую значение, то все равно поле не обновляется. Кстати по поводу обновления, оно должно отобразиться после обновления страницы?
Внимательнее изучил Ваш скрипт обнаружил следующие проблемные моменты в кусе кода:

Код:
'<entity xsi:type=sEntityName>'+ 
'<new_data>\'+data+\'</new_data>'+ 
'<contactid>\'+contactId+\'</contactid>'+
1.
Код:
'<entity xsi:type=sEntityName>'+
такой запрос и уйдёт на сервер. Необходимо поменять по идее на такое:
Код:
'<entity xsi:type=\''+sEntityName + '\'>'+
2.
Код:
'<contactid>\'+contactId+\'</contactid>'+
надо поменять на такое:
Код:
'<' + sEntityName +'id>\'+contactId+\'</' +sEntityName+ 'id>'+
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Tarasov E (1).
Старый 29.09.2009, 15:13   #7  
Tarasov E is offline
Tarasov E
Участник
Аватар для Tarasov E
 
100 / 11 (1) +
Регистрация: 01.09.2009
Большое спасибо! Исправил - заработало
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
haditeo: Is it possible to register different event handlers in only one assembly to be registered in Dynamics CRM Plugin ? Blog bot Dynamics CRM: Blogs 0 13.08.2009 15:05
Microsoft Dynamics CRM Team Blog: CRM Online: ‘Contact Us’ Web Form Made Easy Blog bot Dynamics CRM: Blogs 0 20.05.2009 05:05
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0: Understanding Connections Blog bot Dynamics CRM: Blogs 0 20.01.2009 02:07
Microsoft Dynamics CRM Team Blog: Announcing List Web Part for Microsoft Dynamics CRM 4.0 Blog bot Dynamics CRM: Blogs 0 18.12.2008 06:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 03:01.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.