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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.05.2012, 17:13   #1  
Taker1796 is offline
Taker1796
Участник
Аватар для Taker1796
 
112 / 11 (1) +
Регистрация: 22.04.2012
Всё те же soap запросы :)
Всем привет. Есть кнопка на объекте, по её нажатии мне нужно получить значение лукап поля. При нажатии пишет: ошибка на странице. Больше ничего не происходит. Помогите разобраться что я делаю не так, пожалуйста!

new_credit_programm - поле лукап

var guid=crmForm.ObjectId;

var xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");

var xmlk = [
"<?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'>",
GenerateAuthenticationHeader(),
"<soap:Body>",
" <Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>",
" <entityName>new_dogovor</entityName>",
"<id xsi:type='xsd:string'>"+guid+"</id>",
" <columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>",
"<q1:Attributes>",
"<q1:Attribute>new_credit_programm</q1:Attribute>",
"</q1:Attributes>",
"</columnSet>",
"</Retrieve>",
"</soap:Body>",
"</soap:Envelope>"].join("");
xmlHttpRequest.setRequestHeader("Content-Length", xmlk.length);
xmlHttpRequest.send(xmlk);
var result= xmlHttpRequest.responseXML.xml;

var doc = new ActiveXObject("MSXML2.DOMDocument");
doc.async=false;
doc.loadXML(result);
var returnNode=doc.selectSingleNode("//new_credit_programm");
alert(returnNode.text);
Старый 04.05.2012, 17:18   #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
Цитата:
Сообщение от Taker1796 Посмотреть сообщение
Всем привет. Есть кнопка на объекте, по её нажатии мне нужно получить значение лукап поля. При нажатии пишет: ошибка на странице. Больше ничего не происходит. Помогите разобраться что я делаю не так, пожалуйста!

new_credit_programm - поле лукап

var guid=crmForm.ObjectId;

var xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
xmlHttpRequest.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xmlHttpRequest.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xmlHttpRequest.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");

var xmlk = [
"<?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'>",
GenerateAuthenticationHeader(),
"<soap:Body>",
" <Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>",
" <entityName>new_dogovor</entityName>",
"<id xsi:type='xsd:string'>"+guid+"</id>",
" <columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>",
"<q1:Attributes>",
"<q1:Attribute>new_credit_programm</q1:Attribute>",
"</q1:Attributes>",
"</columnSet>",
"</Retrieve>",
"</soap:Body>",
"</soap:Envelope>"].join("");
xmlHttpRequest.setRequestHeader("Content-Length", xmlk.length);
xmlHttpRequest.send(xmlk);
var result= xmlHttpRequest.responseXML.xml;

var doc = new ActiveXObject("MSXML2.DOMDocument");
doc.async=false;
doc.loadXML(result);
var returnNode=doc.selectSingleNode("//new_credit_programm");
alert(returnNode.text);
Есть вопросы:
1. Что за кнопка - созданная через ISV.Config или через аттрибут на форме.
2. Каким образом вы вызываете данный код.
3. Почему таким образом обрабатываете результат, ведь есть способ гораздо проще - http://technet.microsoft.com/en-us/l.../cc677076.aspx
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 04.05.2012, 17:22   #3  
Taker1796 is offline
Taker1796
Участник
Аватар для Taker1796
 
112 / 11 (1) +
Регистрация: 22.04.2012
1) Кнопка создана через атрибут на форме
2) Вызываю вот так :
crmForm.all.new_button.attachEvent("onclick",TestTheButton);
function TestTheButton()
{
.....
}
Старый 04.05.2012, 17:30   #4  
Taker1796 is offline
Taker1796
Участник
Аватар для Taker1796
 
112 / 11 (1) +
Регистрация: 22.04.2012
Цитата:
Сообщение от Taker1796 Посмотреть сообщение
1) Кнопка создана через атрибут на форме
2) Вызываю вот так :
crmForm.all.new_button.attachEvent("onclick",TestTheButton);
function TestTheButton()
{
.....
}
3) Попробовал предложенный Вами метод. Теперь всё окей, но возвращет вместо значения поля {8803D297-0983-E111-ACA5-00155D011A0F}

Насколько я понимаю это потому что поле лукап. А как достать само значение то? Я просто новичек еще...
Старый 04.05.2012, 17:49   #5  
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
Цитата:
Сообщение от Taker1796 Посмотреть сообщение
3) Попробовал предложенный Вами метод. Теперь всё окей, но возвращет вместо значения поля {8803D297-0983-E111-ACA5-00155D011A0F}

Насколько я понимаю это потому что поле лукап. А как достать само значение то? Я просто новичек еще...
Покажите код, пожалуйста - помогу.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 04.05.2012, 17:53   #6  
Taker1796 is offline
Taker1796
Участник
Аватар для Taker1796
 
112 / 11 (1) +
Регистрация: 22.04.2012
Цитата:
Сообщение от a33ik Посмотреть сообщение
Покажите код, пожалуйста - помогу.
//кнопка
crmForm.all.new_button.DataValue = "Пересчитать кредит";
crmForm.all.new_button.style.textAlign = "center";
crmForm.all.new_button.vAlign = "middle";
//вид кнопки
crmForm.all.new_button.style.cursor = "hand";
crmForm.all.new_button.style.backgroundColor = "#CADFFC";
crmForm.all.new_button.style.color = "#000000";
crmForm.all.new_button.style.borderColor = "#330066";
crmForm.all.new_button.style.fontWeight = "bold";
crmForm.all.new_button.contentEditable = false;
//обработка клика по кнопке
crmForm.all.new_button.attachEvent("onclick",TestTheButton);
function TestTheButton()
{ var guid=crmForm.ObjectId;
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'>"+
GenerateAuthenticationHeader()+
"<soap:Body>"+
"<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+
"<entityName>new_dogovor</entityName>"+
"<id>"+guid+"</id>"+
"<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+
"<q1:Attributes>"+
"<q1:Attribute>new_credit_programm</q1:Attribute>"+
"</q1:Attributes>"+
"</columnSet>"+
"</Retrieve>"+
"</soap:Body>"+
"</soap:Envelope>";

var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Retrieve");
xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
xHReq.setRequestHeader("Content-Length", xml.length);
xHReq.send(xml);

var resultXml = xHReq.responseXML;
var rez=resultXml.selectSingleNode("//q1:new_credit_programm").nodeTypedValue;
alert(rez);
Старый 04.05.2012, 18:12   #7  
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
Попробуйте так:

var rez=resultXml.selectSingleNode("//q1:new_credit_programm").getAttribute("name");
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: Taker1796 (1).
Старый 04.05.2012, 18:20   #8  
Taker1796 is offline
Taker1796
Участник
Аватар для Taker1796
 
112 / 11 (1) +
Регистрация: 22.04.2012
Цитата:
Сообщение от a33ik Посмотреть сообщение
Попробуйте так:

var rez=resultXml.selectSingleNode("//q1:new_credit_programm").getAttribute("name");
Спасибо огромное!! Всё работает!)
Старый 15.05.2012, 13:28   #9  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
А можно ли как то с помощью soap запроса заполнить значение поля? Например есть две сущности 1:N и надо значением из поля сущности1 заполнить поле на сущности2. При этом мы работаем с сущностью1 на событии ончейндж поля
Старый 15.05.2012, 13:35   #10  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Для этого лучше использовать рест. Но вроде и соап можно. Никак не пойму, почему Вы рест не используете. Он проще и есть куча фреймворков.
__________________
Мой блог https://procrm.tv
Старый 15.05.2012, 14:23   #11  
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
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Для этого лучше использовать рест. Но вроде и соап можно. Никак не пойму, почему Вы рест не используете. Он проще и есть куча фреймворков.
Судя по всему у человека 4.0, а там реста ещё не было.
По поводу того, как обновлять сущности при помощи SOAP - посмотрите следующую статью - http://technet.microsoft.com/en-us/l.../cc677074.aspx
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: NoTimeToCry (1).
Старый 15.05.2012, 14:53   #12  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Хорошо. Может быть 4.
10 минут поиска на mmcrm. и вот пример
http://mmcrm.ru/?p=790
вот еще
http://mmcrm.ru/?p=919
и еще
http://mmcrm.ru/?p=1470
CRM 4 была у многих и разрабатывали под неё года 4 если не больше. За это время столько всего уже написано. Так почему изобретать велосипед каждый раз. Все в открытом коде.
__________________
Мой блог https://procrm.tv

Последний раз редактировалось g.Naukovych; 15.05.2012 в 15:01.
За это сообщение автора поблагодарили: NoTimeToCry (1).
Старый 15.05.2012, 16:11   #13  
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
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Хорошо. Может быть 4.
10 минут поиска на mmcrm. и вот пример
http://mmcrm.ru/?p=790
вот еще
http://mmcrm.ru/?p=919
Я пользовался похожей штукой.
Сливка говорит, что вещь хорошая. Почему не использовать её. Этот громоздкий и непонятный никому в дальнейшем соап запрос, как по мне хуже чем использование сторонней библиотеки.
Есть много ответов на этот вопрос на самом деле. Могу сказать от себя, не знаю как у остальных.
1. Для меня эти запросы не непонятны, а прозрачны, потому я их и люблю использовать, а не ковыряться в чужом фреймворке - вдруг там баги?
2. Человек мог и не знать о ресурсе. А если и знал, то мог и не найти как подключить данные фреймворки к системе, а в 4.0 это делается простите через Ж.
3. С момента, как Вячеслав перестал креатировать, а стал попросту драть чужие статьи - я стал посещать его блог только с целью троллинга. Для молодых полезно, для более опытных - глупо.
4. С какого момента мнение Вячеслава стало истиной?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 15.05.2012, 16:27   #14  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Не хотеслоь бы начинать обсуждение slivka_83. Его здесь сейчас нет и я лично с ним не знаком. Из его блога я много узнал лично и рассматриваю его как хранилище данных о различных "красивостях".
Собственно я тестировал и разбирался во фреймворках которые на его сайте находил, точнее читал на его и переходил на официальный, читал отзывы и сам разбирался в коде. Это как мне кажется не сложнее, чем делать соап запросы. Еще помнится, что была программулина, которые эти запросы генерила. И Если возникают такие проблемы с ними, что задается вопрос на форум, то возникает вопрос о необходимости их использования, может быть взять уже готовые куски кода, которые были написаны протестированы другими за долгое время использование CRM 4.
Если взять тот же самый рест, то я использую CrmRestKit. Пришлось с ним поразбираться, но это вроде не критично, за то сейчас он мне время экономит.
Если завтра возникнет задача создать сущность, то проще будет взять фреймворк, с которым разбирался и написать несколько строк, а не начинать воять новый соам запрос и опять в нем запутаться.

Я бы рекомендовал ресурс mmcrm.ru. Это может нравиться или нет, но инфы там много. Возможно она списана. Я даже сам несколько раз оригиналы на английском находил, но для начинающих там много написано, есть возможность задать вопрос и все это на русском языке. Когда я начинал заниматься срм 5 лет назад у нас ресурсов на русском не было вообще.
Если этот форум был раньше, то извините, я о нем узнал несколько лет назад.
__________________
Мой блог https://procrm.tv
Старый 15.05.2012, 16:43   #15  
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
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Возможно она списана.
Не всё конечно, но думаю, что точно больше половины - чужие креативы.

Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Когда я начинал заниматься срм 5 лет назад у нас ресурсов на русском не было вообще.
Если этот форум был раньше, то извините, я о нем узнал несколько лет назад.
Я CRM заниматься стал скоро 4 года как и сюда попал довольно таки быстро. На тот момент ветки по CRM уже были наполнены информацией.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 15.05.2012, 16:57   #16  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Когда был кризис я не занимался.
Могу только поздавить, что MVP за 4 года.
И вообще где человек, который тему поднял? Тут дискуссия идет,
Вот он к примеру скажет мне не нравятся фреймворки из-за того что.... И будет понятно почему я не прав. Или кто-нибудь другой скажет, что они их использовал. Я их использовал на 4 и 2011, предварительно тестировав и читая отзывы, но хотелось бы уточнить кто еще так делает, а кто пишет запросы сам.
__________________
Мой блог https://procrm.tv
Старый 15.05.2012, 18:23   #17  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Нет, сейчас я работаю с CRM 2011. Решил писать всё таки рестом. Но в плане синтаксиса траблы. В общем надо записать значение с поля сущности1 в поле сущности2, пишу код на ончандж сущности 1

Xrm.Page.getAttribute("new_postponed").setValue(days);
var currentValue = Xrm.Page.getAttribute("new_opportunityid").getValue();
COMMON.REST.updateRecord(currentValue[0].id.toString(), new_opportunity_opportunityhistory, "opportunity", function (dataRes) {
Xrm.Page.getAttribute("new_delayed").setValue(new_delayed);

}, function (errorCode) {
//Если пришла ошибка
alert("Can not get response from Server for new_delayed field. " + errorCode.description.trim());
});

В итоге ничего не происходит. Я думаю проблема во втором параметре функции updeteRecord. Я просто не пойму что именно туда писать
Старый 15.05.2012, 18:27   #18  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Возьми CrmRestKit
http://crmrestkit.codeplex.com/
http://mmcrm.ru/?p=1802

Там уже давно придумана функция Update.
__________________
Мой блог https://procrm.tv
Старый 15.05.2012, 18:30   #19  
Ksani is offline
Ksani
Участник
Аватар для Ksani
MCBMSS
 
27 / 17 (1) ++
Регистрация: 31.08.2009
Адрес: Солнечная Страна
Цитата:
Сообщение от NoTimeToCry Посмотреть сообщение
Нет, сейчас я работаю с CRM 2011. Решил писать всё таки рестом. Но в плане синтаксиса траблы. В общем надо записать значение с поля сущности1 в поле сущности2, пишу код на ончандж сущности 1

Xrm.Page.getAttribute("new_postponed").setValue(days);
var currentValue = Xrm.Page.getAttribute("new_opportunityid").getValue();
COMMON.REST.updateRecord(currentValue[0].id.toString(), new_opportunity_opportunityhistory, "opportunity", function (dataRes) {
Xrm.Page.getAttribute("new_delayed").setValue(new_delayed);

}, function (errorCode) {
//Если пришла ошибка
alert("Can not get response from Server for new_delayed field. " + errorCode.description.trim());
});

В итоге ничего не происходит. Я думаю проблема во втором параметре функции updeteRecord. Я просто не пойму что именно туда писать
А почему бы все то же самое не сделать в плагине?
Старый 15.05.2012, 18:31   #20  
NoTimeToCry is offline
NoTimeToCry
Участник
 
101 / 10 (1) +
Регистрация: 28.04.2012
Цитата:
Сообщение от Ksani Посмотреть сообщение
А почему бы все то же самое не сделать в плагине?
Переписывать долго, там очень много когда на js, обновление записи это лишь малая его часть, но важная
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
CRM 2011, вопрос о SOAP mistah Dynamics CRM: Разработка 5 21.03.2012 14:49
Microsoft Dynamics CRM Team Blog: SilverCrmSoap: A CRM Soap Library for CRM 2011 Blog bot Dynamics CRM: Blogs 0 26.04.2011 20:11
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM Online 2011 Web Services SOAP Sample now ready for Europe & Asia Blog bot Dynamics CRM: Blogs 0 28.03.2011 23:11
SOAP и Join slivka_83 Dynamics CRM: Разработка 3 08.06.2009 10:13
Как создать экземпляр кастомной сущности через SOAP? Tony Green Dynamics CRM: Разработка 7 27.02.2009 08:37

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

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

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