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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 10.03.2010, 11:07   #1  
zkk is offline
zkk
Участник
 
14 / 10 (1) +
Регистрация: 16.02.2010
? Как проще вытащить телефон по контакту из 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  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Простите, конечно, но ваш код - это жесть!
Для начала:
Код:
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  
zkk is offline
zkk
Участник
 
14 / 10 (1) +
Регистрация: 16.02.2010
А может быть это проще сделать через workflow?
Старый 10.03.2010, 13:47   #4  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Вам сначала надо с самой задачей разобраться.
Что делать, если получателей несколько? Чей телефон брать?
Старый 10.03.2010, 14:08   #5  
zkk is offline
zkk
Участник
 
14 / 10 (1) +
Регистрация: 16.02.2010
брать телефон нужно первого получателя, поскольку в 99% получатель будет всегда один

И наверное все-таки правильнее всего на OnChange по полю получателя повесить javascript, который будет вытаскивать телефон
Старый 10.03.2010, 14:30   #6  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Цитата:
Сообщение от zkk Посмотреть сообщение
И наверное все-таки правильнее всего на OnChange по полю получателя повесить javascript, который будет вытаскивать телефон
Именно это я и хотел вам предложить!
Старый 10.03.2010, 14:53   #7  
zkk is offline
zkk
Участник
 
14 / 10 (1) +
Регистрация: 16.02.2010
!
Спасибо за помощь

Вот в итоге нашел решение на 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  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Вот и прекрасно! Все бы вопросы так решались!
За это сообщение автора поблагодарили: zkk (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crmdude: Querying a PartyList field Blog bot Dynamics CRM: Blogs 0 14.09.2009 11:05
Как вытащить данные из лукапа на 2 сущности? vital.mih Dynamics CRM: Функционал 1 06.07.2009 16:07
Отображение полей partylist в представлениях OlegaN Dynamics CRM: Разработка 1 26.06.2009 14:14
Поля partylist, поиск и сортировка sergeyjb Dynamics CRM: Функционал 0 25.12.2008 14:00
Шаблон заполнения поля Телефон Talisman2005 Dynamics CRM: Разработка 2 17.06.2008 10:28

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:52.