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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.05.2010, 21:33   #1  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от Hjvfirf Посмотреть сообщение
Артем, я пробовала повесить БП на список ожидания, в котором по условию запуска "создание записи" отправляется письмо.. но это не отрабатывает... а из других вариантов условий запуска - что то ничего подходящего нет((
Оно отрабатывает: при создании самого списка ожидания. Но это, я думаю, не то что вы хотели. Создайте WF для объекта Электронная почта в котором делайте проверку: если поле Получатель равно <Нужный список ожидания>, то <Ваши действия>. Я использовал подобное для преобразования писем попавших в ящик в интересы. К сожалению с объектом Обращение это не срабатывает: у него нет мультилиста Получатель, а есть только Ответственный, который всегда пользователь.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 18.05.2010, 09:58   #2  
Hjvfirf is offline
Hjvfirf
Участник
 
24 / 10 (1) +
Регистрация: 27.04.2010
Спасибо, Артем! Сейчас попробую)))
Старый 18.05.2010, 10:16   #3  
Hjvfirf is offline
Hjvfirf
Участник
 
24 / 10 (1) +
Регистрация: 27.04.2010
Артем...попробывала... повесила БП на объект Электронная почта, запуск при Создании записи... Не отрабатывает((( да и поля получатель нету(( но даже без вяких проверок не отрабатывает...не пойму почему((
Старый 18.05.2010, 11:07   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от Hjvfirf Посмотреть сообщение
Не отрабатывает((( да и поля получатель нету((
Куда делось, простите? Имя схемы у него: "to", на атрибут может называться иначе, конечно. Вы точно с электронной почтой работаете?
Если вообще никакие процессы не запускаются, то нужно попробовать поставить последние пакеты обновлений, если еще не стоят. И перезапустить службу асинхронных операций CRM.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 18.05.2010, 11:22   #5  
NatK is offline
NatK
Участник
Аватар для NatK
 
48 / 13 (1) ++
Регистрация: 16.06.2009
Адрес: Иркутск
В результате мы пришли к письмам, поскольку со всплывающими сообщениями были проблемы (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>"+
"<q1istinct>false</q1istinct>"+
"<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).
Старый 18.05.2010, 11:37   #6  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Цитата:
Сообщение от NatK Посмотреть сообщение
На онанлоад функции добавляем скрипт, который проверяет, изменилась ли очередь и сохраняет изменения.
Хе, а если обращение очереди назначили, а карточку не открывали. Скрипт не сработает, поле не изменится, письмо не уйдет.
__________________
Опыт позволяет ошибаться гораздо увереннее.
Старый 18.05.2010, 11:54   #7  
NatK is offline
NatK
Участник
Аватар для NatK
 
48 / 13 (1) ++
Регистрация: 16.06.2009
Адрес: Иркутск
Это да но тут вопрос в том, как научить пользователей - можно показать только один вариант, а все остальные спрятать или добавить на кнопки аналогичный код.
Ну и у нас специфика такая, что почти каждый должен отписаться в примечании прежде, чем назначать, поэтому все открывают обращения и онанлоад подходит
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Информирование пользователя о попадании нового обращения/эл почты/задачи/... в список ожидания, путем всплывающего окна Outlook NatK Dynamics CRM: Администрирование 15 26.10.2009 13:05
Представления в списке ожидания OlegaN Dynamics CRM: Разработка 4 12.10.2009 15:32
Письмо в списке ожидания usercrm Dynamics CRM: Разработка 2 22.10.2008 10:26
Смена ответственного при назначении обращения списку ожидания Evgenia_f Dynamics CRM: Разработка 5 09.09.2008 16:50
Письма в "Списки ожидания" - "Мои задачи" ДмитрийCол Dynamics CRM: Функционал 0 10.01.2007 09:46
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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