![]() |
#11 |
Участник
|
В результате мы пришли к письмам, поскольку со всплывающими сообщениями были проблемы (RSS периодически перестает работать по непонятным причинам)
По сути дела: На форму обращения добавляем текстовое поле, которое хранит наименование текущей очереди. WF настраиваем на событие "назначение записи" (можно попробовать и на изменение нашего атрибута): создаем письмо и отправляем, адрес устанавливаем в зависимости от значения поля "Текущая очередь". Про изменение значения поля с именем очереди: На онанлоад функции добавляем скрипт, который проверяет, изменилась ли очередь и сохраняет изменения. window.onunload = function() { foronunload(); crmForm.detachCloseAlert();//поскольку сохраняем принудительно, то вопрос не задаем crmForm.Save(); //ну это необходимость, чтобы сохранилось наше поле } /*===============================================================*/ сама функция проверки: window.foronunload = function() { try{ try{ _guid = getQueue(crmForm.ObjectId); } catch(ex){} if (_guid !="" && _guid!=null && _guid!="undefined"){ var q=""; if(_guid!=null) { q = GetAttributeValueFromID("queue",_guid, "name"); //проверяем, если очередь изменилась - меняем new_currentqueue if (q!=crmForm.all.new_currentqueue.DataValue) { crmForm.all.new_currentqueue.DataValue =q; } } } } catch(ex){} } // скобки проверьте!!!!!!!!!!!!!!!! ![]() /*===============================================================*/ для получения guid очереди и ее наименования используем: function getQueue(accountguid) { var result= ""; var authenticationHeader = GenerateAuthenticationHeader(); // Prepare the SOAP message. 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>"+ "<RetrieveMultiple xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ "<query xmlns:q1='http://schemas.microsoft.com/crm/2006/Query'"+ " xsi:type='q1:QueryExpression'>"+ "<q1:EntityName>queueitem</q1:EntityName>"+ "<q1:ColumnSet xsi:type='q1:ColumnSet'>"+ "<q1:Attributes>"+ "<q1:Attribute>queueid</q1:Attribute>"+ "</q1:Attributes>"+ "</q1:ColumnSet>"+ "<q1 ![]() ![]() "<q1:Criteria>"+ "<q1:FilterOperator>And</q1:FilterOperator>"+ "<q1:Conditions>"+ "<q1:Condition>"+ "<q1:AttributeName>objectid</q1:AttributeName>"+ "<q1:Operator>Like</q1:Operator>"+ "<q1:Values>"+ "<q1:Value xsi:type='xsd:string'>"+accountguid+"</q1:Value>"+ "</q1:Values>"+ "</q1:Condition>"+ "</q1:Conditions>"+ "</q1:Criteria>"+ "</query>"+ "</RetrieveMultiple>"+ "</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/RetrieveMultiple"); 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 the retrieved value. else { var results = resultXml.getElementsByTagName('BusinessEntity'); var msg = ""; if (results.length == 0) { msg = "Nothing was found "; //alert(msg); return; } else { for (i=0;i < 1;i++) { var idValue = results[i].selectSingleNode('./q1:queueid').nodeTypedValue; result = idValue.toString(); } } return result; } } /*===============================================================*/ //спасибо тому, кто написал эту функцию (откуда скопирована - не помню, но кажется это был mmcrm.ru ![]() 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 = " "; //alert(msg); } // Display the retrieved value. else { return result; } } Вот и все, надеюсь, заработает и кому-то еще пригодиться. P.S. если есть более оптимальные варианты - с удовольствием воспользуюсь ![]() |
|
|
За это сообщение автора поблагодарили: Elka (1), Hjvfirf (1). |
|
|