|  11.09.2009, 13:47 | #1 | 
| Участник | Отправка e-mail из  сохраненного заказа с данными об организации и продуктами из заказа 
			
			Вот такая вот нетривиальная задача. Есть ли способы решения без плагина? можно какой нибуть JavaScript на OnSave повесить?
		 | 
|  | 
|  11.09.2009, 13:50 | #2 | 
| MCTS | 
			
			Т.е. при создании заказа, необходимо кого-то уведомить по мыло (начальника)... о таком заказе ?
		 
				__________________   | 
|  | 
|  11.09.2009, 13:52 | #3 | 
| Консультант-джедай | 
			
			думается что нет...
		 
				__________________ Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать!  Блога | 
|  | 
|  11.09.2009, 13:53 | #4 | 
| Участник | |
|  | 
|  11.09.2009, 13:55 | #5 | 
| MCTS | 
			
			Я вот не программер, и думаю в другую сторону. Например добавить на форме заказа - статус (при создании - новый, при подготовленном заказе к исполнению). Манагер создал заказ, проверил, поставил статус к исполнению, сохранил закрыл а в это время изменение статуса поджитает готовое правило. Workflow (запуск событие OnChange), при изменении статуса формировал бы письмо в бух 
				__________________   | 
|  | 
|  11.09.2009, 13:55 | #6 | 
| Консультант-джедай | 
			
			Кстати... может быть Вам отчет написать и отсылать его по расписанию?    
				__________________ Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать!  Блога | 
|  | 
|  11.09.2009, 13:56 | #7 | 
| Консультант-джедай | 
			
			А как в письме перечислить все заказанные продукты?
		 
				__________________ Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать!  Блога | 
|  | 
|  11.09.2009, 13:59 | #8 | 
| Kostya Afendikov | Цитата: А по вопросу: Может будете ссылку на заказ в письме передавать, они будут на нее нажимать и видеть все что им надо | 
|  | 
|  11.09.2009, 13:59 | #9 | 
| MCTS | 
			
			Есть трабл, такая же хреновина была со слиянием. Из перечня продуктов (предложения, заказа) брался ока первый продукт. Решение валялось где-то, не помню. Думаю и тута можно решить! К сожалению CRM не щупал уже больше 9ти месяцев, проверить не могу 
				__________________   | 
|  | 
|  11.09.2009, 14:02 | #10 | 
| Участник | |
|  | 
|  11.09.2009, 14:04 | #11 | 
| Консультант-джедай | Цитата:   
				__________________ Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать!  Блога | 
|  | 
|  11.09.2009, 14:06 | #12 | 
| Участник | Цитата: 
		
			Сообщение от Bondonello
			   А потом бухгалтера делают Заказ в 1С? Если да, то уже существуют готовые решения по передачи объектов (Заказов, Организаций...) из CRM в 1С ну и наоборот соответственно, правда стоят денег. Зато автоматизация и уверенность в том, что бухгалтер не ошибется при переписывании/копировании заказа, его данных, продуктов.  А по вопросу: Может будете ссылку на заказ в письме передавать, они будут на нее нажимать и видеть все что им надо По вопросу: Тоже хорошая идея. Есть ссылка на решение как это реализавать? | 
|  | 
|  11.09.2009, 14:06 | #13 | 
| Консультант-джедай | Цитата:  нужно писать отчет в Visual Studio  или в встроенном (в CRM) редакторе отчетов ... затем использовать механизм Reporting Services для рассылки   
				__________________ Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать!  Блога | 
|  | 
|  11.09.2009, 14:06 | #14 | 
| Kostya Afendikov | |
|  | 
|  11.09.2009, 14:08 | #15 | 
| Kostya Afendikov | Цитата: | 
|  | 
|  11.09.2009, 14:11 | #16 | 
| Участник | |
|  | 
|  11.09.2009, 14:12 | #17 | 
| Участник | |
|  | 
|  11.09.2009, 14:15 | #18 | 
| Чайный пьяница | 
			
			Делал подобную кастомизацию с тем отличием, что это всё выполнялось не из заказа, а из предложения. Итак идея: 1. Отключаем фильтрацию параметров в CRM - добавляете параметр в ветку реестра HKEY_Local_Machine\Software\Microsoft\MSCRM DWORD DisableParameterFilter = 1 и выполняете iisreset. 2. Добавляете через ISV конфиг кнопку в сущность, из которой надо вызывать открытие письма с заполнением тела деталями. Суть - открыть новое письмо с дополнительным параметром в строке по наличию которого анализируется, что надо заполнить тело письма. Код кнопки: Код:         <Entity name="quote">
          <ToolBar ValidForCreate="0" ValidForUpdate="1">
            <Button Icon="/_imgs/ico_16.gif" JavaScript="var url = '/' + ORG_UNIQUE_NAME + '/activities/email/edit.aspx?pId=' + crmForm.ObjectId + '&pType='+crmForm.ObjectTypeCode+ '&pName=' + crmForm.all.name.DataValue + '&FillWithQuoteDetails=1'; window.open(url);">
              <Titles>
                <Title LCID="1049" Text="Заявка на информацию" />
              </Titles>
              <ToolTips>
                <ToolTip LCID="1049" Text="Заявка на информацию" />
              </ToolTips>
            </Button>
          </ToolBar>
	</Entity>Код: function InsertDescription()
{
	var descrFrame = document.getElementById('descriptionIFrame');
	if(descrFrame.readyState != 'complete')
		return;
	var quoteid = '';
	if (crmForm.all.regardingobjectid.DataValue != null && crmForm.all.regardingobjectid.DataValue[0] != null)
		quoteid = crmForm.all.regardingobjectid.DataValue[0].id;
	else
		return;
	var textbody = "Прошу предоставить информацию по указанным продуктам:";
	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'>"+ 
	GenerateAuthenticationHeader()+
	"<soap:Body>"+ 
	"<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ 
	"<fetchXml><fetch mapping='logical'>"+
	"<entity name='quotedetail'>"+
	"<attribute name='productdescription'/>"+
	"<attribute name='quantity'/>"+
	"<attribute name='productid'/>"+
	"<attribute name='uomid'/>"+
	"<filter type='and'>"+
	"<condition attribute='quoteid' operator='eq' value='" + quoteid + "'/>"+
	"</filter>"+
	"</entity>"+
	"</fetch></fetchXml>"+ 
	"</Fetch>"+ 
	"</soap:Body>"+ 
	"</soap:Envelope>";
	
	var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
	xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
	xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
	xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
	xHReq.setRequestHeader("Content-Length", xml.length);
	xHReq.send(xml);
	var resultXml = xHReq.responseXML;
	var resultSet = resultXml.text;
	resultSet.replace('<','<');
	resultSet.replace('>','>');
	var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	oXmlDoc.async = false;
	oXmlDoc.loadXML(resultSet);
	var results = oXmlDoc.getElementsByTagName('result');
	//debugger;
	for (var i=0; i < results.length;i++)
	{
		textbody = textbody + "<br/>"+ 
		(results[i].selectSingleNode('./productid') == null ? "" : results[i].selectSingleNode('./productid').getAttribute('name')) + 
		" " + (results[i].selectSingleNode('./productdescription') == null ? "" : results[i].selectSingleNode('./productdescription').nodeTypedValue) 
+
		" в количестве " + (results[i].selectSingleNode('./quantity') == null ? "" : results[i].selectSingleNode('./quantity').nodeTypedValue) +
		" " + (results[i].selectSingleNode('./uomid') == null ? "" : results[i].selectSingleNode('./uomid').getAttribute('name'));
	}
	var descrWindow = document.frames['descriptionIFrame'];
	descrWindow.document.body.innerHTML = textbody;
}
if (crmForm.FormType == 1 && window.location.href.indexOf('FillWithQuoteDetails=1') != -1)
{
	var descrFrame = document.getElementById('descriptionIFrame');
	descrFrame.attachEvent('onreadystatechange',InsertDescription);
}
				__________________ Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit | 
|  | |
| За это сообщение автора поблагодарили: datfi (1). | |
|  11.09.2009, 14:25 | #19 | 
| Участник | Цитата: 
		
			Сообщение от a33ik
			   Делал подобную кастомизацию с тем отличием, что это всё выполнялось не из заказа, а из предложения. Итак идея: 1. Отключаем фильтрацию параметров в CRM - добавляете параметр в ветку реестра HKEY_Local_Machine\Software\Microsoft\MSCRM DWORD DisableParameterFilter = 1 и выполняете iisreset. 2. Добавляете через ISV конфиг кнопку в сущность, из которой надо вызывать открытие письма с заполнением тела деталями. Суть - открыть новое письмо с дополнительным параметром в строке по наличию которого анализируется, что надо заполнить тело письма. Код кнопки: Код:         <Entity name="quote">
          <ToolBar ValidForCreate="0" ValidForUpdate="1">
            <Button Icon="/_imgs/ico_16.gif" JavaScript="var url = '/' + ORG_UNIQUE_NAME + '/activities/email/edit.aspx?pId=' + crmForm.ObjectId + '&pType='+crmForm.ObjectTypeCode+ '&pName=' + crmForm.all.name.DataValue + '&FillWithQuoteDetails=1'; window.open(url);">
              <Titles>
                <Title LCID="1049" Text="Заявка на информацию" />
              </Titles>
              <ToolTips>
                <ToolTip LCID="1049" Text="Заявка на информацию" />
              </ToolTips>
            </Button>
          </ToolBar>
	</Entity>Код: function InsertDescription()
{
	var descrFrame = document.getElementById('descriptionIFrame');
	if(descrFrame.readyState != 'complete')
		return;
	var quoteid = '';
	if (crmForm.all.regardingobjectid.DataValue != null && crmForm.all.regardingobjectid.DataValue[0] != null)
		quoteid = crmForm.all.regardingobjectid.DataValue[0].id;
	else
		return;
	var textbody = "Прошу предоставить информацию по указанным продуктам:";
	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'>"+ 
	GenerateAuthenticationHeader()+
	"<soap:Body>"+ 
	"<Fetch xmlns='http://schemas.microsoft.com/crm/2007/WebServices'>"+ 
	"<fetchXml><fetch mapping='logical'>"+
	"<entity name='quotedetail'>"+
	"<attribute name='productdescription'/>"+
	"<attribute name='quantity'/>"+
	"<attribute name='productid'/>"+
	"<attribute name='uomid'/>"+
	"<filter type='and'>"+
	"<condition attribute='quoteid' operator='eq' value='" + quoteid + "'/>"+
	"</filter>"+
	"</entity>"+
	"</fetch></fetchXml>"+ 
	"</Fetch>"+ 
	"</soap:Body>"+ 
	"</soap:Envelope>";
	
	var xHReq = new ActiveXObject("Msxml2.XMLHTTP");
	xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);
	xHReq.setRequestHeader("SOAPAction","http://schemas.microsoft.com/crm/2007/WebServices/Fetch");
	xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
	xHReq.setRequestHeader("Content-Length", xml.length);
	xHReq.send(xml);
	var resultXml = xHReq.responseXML;
	var resultSet = resultXml.text;
	resultSet.replace('<','<');
	resultSet.replace('>','>');
	var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	oXmlDoc.async = false;
	oXmlDoc.loadXML(resultSet);
	var results = oXmlDoc.getElementsByTagName('result');
	//debugger;
	for (var i=0; i < results.length;i++)
	{
		textbody = textbody + "<br/>"+ 
		(results[i].selectSingleNode('./productid') == null ? "" : results[i].selectSingleNode('./productid').getAttribute('name')) + 
		" " + (results[i].selectSingleNode('./productdescription') == null ? "" : results[i].selectSingleNode('./productdescription').nodeTypedValue) 
+
		" в количестве " + (results[i].selectSingleNode('./quantity') == null ? "" : results[i].selectSingleNode('./quantity').nodeTypedValue) +
		" " + (results[i].selectSingleNode('./uomid') == null ? "" : results[i].selectSingleNode('./uomid').getAttribute('name'));
	}
	var descrWindow = document.frames['descriptionIFrame'];
	descrWindow.document.body.innerHTML = textbody;
}
if (crmForm.FormType == 1 && window.location.href.indexOf('FillWithQuoteDetails=1') != -1)
{
	var descrFrame = document.getElementById('descriptionIFrame');
	descrFrame.attachEvent('onreadystatechange',InsertDescription);
}DWORD DisableParameterFilter = 1 на что еще повлияет? Какую фильтрацию оно отключает? | 
|  | 
|  11.09.2009, 14:29 | #20 | 
| Консультант-джедай | 
			
			Этот ключь разрешает передавать дополнительные параметры в адресной строке (браузера) на формы CRM. Если не включить этот флаг при добавлении параметра в адресноую строку форма свалится с ошибкой    
				__________________ Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать!  Блога | 
|  |