01.04.2009, 07:55 | #21 |
Участник
|
Код: var invite4 = GetAttributeValueFromID('new_date_protocol', crmForm.all.new_protocolsfordate.DataValue[0].id, 'new_invite4'); crmForm.all.new_invite.DataValue=invite4 function GetAttributeValueFromID(sEntityName, GUID, sAttributeName) { 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:Body>"+ "<Retrieve xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ "<entityName>"+sEntityName+"</entityName>"+ "<id>"+GUID+"</id>"+ "<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'>"+ "<q1:Attributes>"+ "<q1:Attribute>"+sAttributeName+"</q1:Attribute>"+ "</q1:Attributes>"+ "</columnSet>"+ "</Retrieve>"+ "</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/Retrieve"); 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; var result = resultXml.selectSingleNode("//q1:" + sAttributeName).nodeTypedValue; if (errorCount != 0) { var msg = resultXml.selectSingleNode('//description').nodeTypedValue; result = " "; } // Display the retrieved value. else { alert('test') return result; } } Последний раз редактировалось vital.mih; 01.04.2009 в 07:59. |
|
02.04.2009, 07:28 | #22 |
Участник
|
ну что нет ни у кого идей??
|
|
02.04.2009, 12:05 | #23 |
Чайный пьяница
|
Это только идеи, которые не могу проверить на практике, потому что в отпуске с ноутом на коленях .
Итак: 1. Стоит всё-таки везде где надо ставить ; В вашем случае это строка 3 - crmForm.all.new_invite.DataValue=invite4; 2. Перед присвоением - поставьте alert(invite4); и убедитесь, что возвращается корректное значение. 3. Убедитесь, что поле new_invite вынесено на форму и желательно таки указать его тип, чтобы знать с чем имеем дело. 4. Перед выполнением поиска желательно вставить проверку, что crmForm.all.new_protocolsfordate.DataValue != null &&crmForm.all.new_protocolsfordate.DataValue.length != 0 Пробуйте. Если опять не заработает - есди дождётесь меня из отпуска и Вам не помогут - постараюсь помочь.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
02.04.2009, 12:27 | #24 |
Kostya Afendikov
|
|
|
02.04.2009, 15:15 | #25 |
Чайный пьяница
|
А ещё лучше - волшебной коммандой debugger; (при этом не забудьте включить отладку скриптов у себя в браузере).
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
06.04.2009, 15:04 | #26 |
Участник
|
не проходит короче эта строчка:
var result = resultXml.selectSingleNode("//q1:" + sAttributeName).nodeTypedValue; Как бы задать условие, чтобы она не выполнялась, если искомый атрибут null? |
|
06.04.2009, 15:07 | #27 |
Участник
|
или как задать, чтобы в строке
var errorCount = resultXml.selectNodes('//error').length; errorCount становилось единицей в случае, если искомый атрибут null? |
|
06.04.2009, 16:35 | #28 |
Участник
|
А как вытащить значение атрибута с типом дата?
|
|
06.04.2009, 17:07 | #29 |
Kostya Afendikov
|
Точно так же, только потом его необходимо преобразовать в необходимый для себя
вот вариант "по-быстрому" var datec; datec = GetAttributeValueFromID("new_entity","{63802E36-49AB-DC11-94ED-000423AF733E}","new_daterate"); var year; var month; var day; year = datec.substr(0,4); month = datec.substr(5,2); day = datec.substr(8,2); crmForm.all.new_mydaterate.DataValue =new Date(year,month,day); |
|
06.04.2009, 17:16 | #30 |
Участник
|
Цитата:
Сообщение от Bondonello
Точно так же, только потом его необходимо преобразовать в необходимый для себя
вот вариант "по-быстрому" var datec; datec = GetAttributeValueFromID("new_entity","{63802E36-49AB-DC11-94ED-000423AF733E}","new_daterate"); var year; var month; var day; year = datec.substr(0,4); month = datec.substr(5,2); day = datec.substr(8,2); crmForm.all.new_mydaterate.DataValue =new Date(year,month,day); |
|
06.04.2009, 17:51 | #31 |
Участник
|
А как присвоить Lookup-атрибут одной сущности Lookup аттрибуту другой сущности? Т.е. допустим у аккаунта есть связь c TestEntity (N:1) и у контакта есть связь с TestEntity (N:1). Как на форме создания (обновления) контакта при выборе Parent account подставить автоматически связь TestEntity аккаунта?
На OnChanged событии аттрибута parent_account я уже получил GUID TestEntity выбранного аккаунта. Осталось только присвоить crmForm.all.testentityid.DataValue значение. Но DataValue в этом случае NULL (пользователь ничего не выбрал). Кто-нибудь сталкивался с такой задачей? Есть идеи? Спасибо. |
|
06.04.2009, 18:58 | #32 |
Чайный пьяница
|
Цитата:
Поэтому используйте примерно такой код: Код: var datec; datec = GetAttributeValueFromID("new_entity","{63802E36-49AB-DC11-94ED-000423AF733E}","new_daterate"); var year; var month; var day; year = datec.substr(0,4); month = datec.substr(5,2) - 1; day = datec.substr(8,2); crmForm.all.new_mydaterate.DataValue =new Date(year,month,day);
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
06.04.2009, 19:04 | #33 |
Чайный пьяница
|
Цитата:
Сообщение от SilentBlaze
А как присвоить Lookup-атрибут одной сущности Lookup аттрибуту другой сущности? Т.е. допустим у аккаунта есть связь c TestEntity (N:1) и у контакта есть связь с TestEntity (N:1). Как на форме создания (обновления) контакта при выборе Parent account подставить автоматически связь TestEntity аккаунта?
На OnChanged событии аттрибута parent_account я уже получил GUID TestEntity выбранного аккаунта. Осталось только присвоить crmForm.all.testentityid.DataValue значение. Но DataValue в этом случае NULL (пользователь ничего не выбрал). Кто-нибудь сталкивался с такой задачей? Есть идеи? Спасибо.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
14.04.2009, 09:48 | #34 |
Участник
|
А каким образом,наоборот, присвоить атрибут из "подвязанной сущности" атрибуту "главной", ведь там нет лукапа.
|
|
14.04.2009, 14:19 | #35 |
Чайный пьяница
|
Цитата:
2. Выполнить апдейт полей родительской сущности по полученному айдишнику родительской записи средствами веб сервисов.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit Последний раз редактировалось a33ik; 14.04.2009 в 15:14. |
|
07.07.2009, 08:39 | #36 |
Участник
|
Кстати, так вопрос и не решился, если искомый атрибут null?
|
|
07.07.2009, 09:45 | #37 |
Участник
|
Я вопрос с null решил так:
telephone1= resultXml.selectSingleNode("//q1:telephone1"); if ( telephone1 !=null ) crmForm.all.telephone1.DataValue = telephone1.nodeTypedValue else {crmForm.all.telephone1.DataValue = null} работает. |
|
08.09.2010, 05:49 | #38 |
Участник
|
Молодцы =))
А с Гуидами в Пиклистке.... жжете.. ржал минуты 2 рассмешили =)))) Спасибо! |
|
08.09.2010, 10:53 | #39 |
Чайный пьяница
|
Не совсем понял, почему посмешило. Можете объяснить?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|