10.03.2010, 11:07 | #1 |
Участник
|
Как проще вытащить телефон по контакту из partylist?
В форме Звонок нужно выбирать в Получателя, после чего будет авто подставляться его телефон в поле Телефон формы Звонок.
Я последовал примеру из SDK, но не получается в плагине получить Guid контакта, выбираемого в partylist подскажите, что я делаю не так? вот часть кода Код: ICrmService crmService = context.CreateCrmService(true); phonecall phonecall = new phonecall(); activityparty toparty = new activityparty(); toparty.partyid = new Lookup(); toparty.partyid.type = EntityName.phonecall.ToString(); toparty.partyid.Value = new Guid(toparty.partyid.Value.ToString()); phonecall.to = new activityparty[] { toparty }; phonecall _phonecall = (phonecall)crmService.Retrieve(EntityName.phonecall.ToString(), toparty.partyid.Value, new AllColumns()); toparty = phonecall.to[0]; contact _contact = (contact)crmService.Retrieve(EntityName.contact.ToString(), toparty.partyid.Value, new AllColumns()); new_attrib = _contact.telephone1.ToString(); entity.Properties.Add(new StringProperty("phonenumber", new_attrib)); |
|
10.03.2010, 12:12 | #2 |
Участник
|
Простите, конечно, но ваш код - это жесть!
Для начала: Код: phonecall phonecall = new phonecall(); А вот это шедевр: Код: activityparty toparty = new activityparty(); toparty.partyid = new Lookup(); toparty.partyid.type = EntityName.phonecall.ToString(); toparty.partyid.Value = new Guid(toparty.partyid.Value.ToString()); Дальше можно не продолжать... |
|
10.03.2010, 13:32 | #3 |
Участник
|
А может быть это проще сделать через workflow?
|
|
10.03.2010, 13:47 | #4 |
Участник
|
Вам сначала надо с самой задачей разобраться.
Что делать, если получателей несколько? Чей телефон брать? |
|
10.03.2010, 14:08 | #5 |
Участник
|
брать телефон нужно первого получателя, поскольку в 99% получатель будет всегда один
И наверное все-таки правильнее всего на OnChange по полю получателя повесить javascript, который будет вытаскивать телефон |
|
10.03.2010, 14:30 | #6 |
Участник
|
|
|
10.03.2010, 14:53 | #7 |
Участник
|
Спасибо за помощь
Вот в итоге нашел решение на Onchange event Код: if (crmForm.all.to.DataValue != null && crmForm.all.directioncode.DataValue == true) { var lookUp = new Array(); lookUp = crmForm.all.to.DataValue; var pId = lookUp[0].id; var pType = lookUp[0].typename; var phoneField = "telephone1"; if (pType == "systemuser") { phoneField = "address1_telephone1"; } var authenticationHeader = GenerateAuthenticationHeader(); // Define the SOAP XML to access Microsoft Dynamics CRM Web service. 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\">" + authenticationHeader+ "<soap:Body>" + "<Retrieve xmlns="+ "\"http://schemas.microsoft.com/crm/2007/WebServices\">" + "<entityName>" + pType + "</entityName>" + "<id>" + pId + "</id>" + "<columnSet xmlns:q1='http://schemas.microsoft.com/crm/2006/Query' xsi:type='q1:ColumnSet'><q1:Attributes><q1:Attribute>" + phoneField + "</q1:Attribute></q1:Attributes></columnSet>" + "</Retrieve>"+ "</soap:Body>" + "</soap:Envelope>"; // Create an instance of an XMLHTTP object. var xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); // Configure the XMLHttp object for the // Microsoft CRM Web services. xmlHttpRequest.Open( "POST", "/mscrmservices/2007/CrmService.asmx", false ); xmlHttpRequest.setRequestHeader( "SOAPAction", "http://schemas.microsoft.com/crm/2007/WebServices/Retrieve" ); xmlHttpRequest.setRequestHeader( "Content-Type", "text/xml; charset=utf-8" ); xmlHttpRequest.setRequestHeader( "Content-Length", xml.length ); // Send the XMLHttp request. xmlHttpRequest.send(xml); // Capture the XMLHttp response in XML format. var resultXml = xmlHttpRequest.responseXML; var pNum = null; if (resultXml.selectNodes("//q1:" + phoneField).length == 1) { crmForm.all.phonenumber.DataValue = resultXml.selectSingleNode("//q1:" + phoneField).text; } } |
|
10.03.2010, 15:14 | #8 |
Участник
|
Вот и прекрасно! Все бы вопросы так решались!
|
|
|
За это сообщение автора поблагодарили: zkk (1). |