AXForum  
Go Back   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 11.09.2009, 13:47   #1  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Join Date: 20.08.2009
Location: Россия, Сыктывкар
Отправка e-mail из сохраненного заказа с данными об организации и продуктами из заказа
Вот такая вот нетривиальная задача. Есть ли способы решения без плагина? можно какой нибуть JavaScript на OnSave повесить?
Old 11.09.2009, 13:50   #2  
Сабитов Андрей is offline
Сабитов Андрей
MCTS
Сабитов Андрей's Avatar
MCBMSS
Лучший по профессии 2009
 
851 / 122 (6) +++++
Join Date: 07.09.2006
Location: СПб
Т.е. при создании заказа, необходимо кого-то уведомить по мыло (начальника)... о таком заказе ?
__________________
Old 11.09.2009, 13:52   #3  
slivka_83 is offline
slivka_83
Консультант-джедай
slivka_83's Avatar
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Join Date: 18.12.2008
Location: default city
думается что нет...
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Old 11.09.2009, 13:53   #4  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Join Date: 20.08.2009
Location: Россия, Сыктывкар
Quote:
Originally Posted by Сабитов Андрей View Post
Т.е. при создании заказа, необходимо кого-то уведомить по мыло (начальника)... о таком заказе ?
Практически так. Только в данном случае при сохранении заказа отсылается мыло в бухгалтерию с вышеуказанными данными для выставления счета в 1с.
Old 11.09.2009, 13:55   #5  
Сабитов Андрей is offline
Сабитов Андрей
MCTS
Сабитов Андрей's Avatar
MCBMSS
Лучший по профессии 2009
 
851 / 122 (6) +++++
Join Date: 07.09.2006
Location: СПб
Я вот не программер, и думаю в другую сторону.
Например добавить на форме заказа - статус (при создании - новый, при подготовленном заказе к исполнению).
Манагер создал заказ, проверил, поставил статус к исполнению, сохранил закрыл
а в это время изменение статуса поджитает готовое правило.
Workflow (запуск событие OnChange), при изменении статуса формировал бы письмо в бух
__________________
Old 11.09.2009, 13:55   #6  
slivka_83 is offline
slivka_83
Консультант-джедай
slivka_83's Avatar
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Join Date: 18.12.2008
Location: default city
Кстати... может быть Вам отчет написать и отсылать его по расписанию?
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Old 11.09.2009, 13:56   #7  
slivka_83 is offline
slivka_83
Консультант-джедай
slivka_83's Avatar
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Join Date: 18.12.2008
Location: default city
Quote:
Originally Posted by Сабитов Андрей View Post
Я вот не программер, и думал в другую сторону.
Например добавит на форме заказа статус (при создании - новый, при подготовленном заказе к исполнению).
Написал бы workflow (запуск событие OnChange), при изменении статуса формировал бы письмо в бух
А как в письме перечислить все заказанные продукты?
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Old 11.09.2009, 13:59   #8  
Bondonello is offline
Bondonello
Kostya Afendikov
Bondonello's Avatar
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Join Date: 06.06.2008
Location: Украина
Quote:
Originally Posted by datfi View Post
Практически так. Только в данном случае при сохранении заказа отсылается мыло в бухгалтерию с вышеуказанными данными для выставления счета в 1с.
А потом бухгалтера делают Заказ в 1С? Если да, то уже существуют готовые решения по передачи объектов (Заказов, Организаций...) из CRM в 1С ну и наоборот соответственно, правда стоят денег. Зато автоматизация и уверенность в том, что бухгалтер не ошибется при переписывании/копировании заказа, его данных, продуктов.

А по вопросу: Может будете ссылку на заказ в письме передавать, они будут на нее нажимать и видеть все что им надо
Old 11.09.2009, 13:59   #9  
Сабитов Андрей is offline
Сабитов Андрей
MCTS
Сабитов Андрей's Avatar
MCBMSS
Лучший по профессии 2009
 
851 / 122 (6) +++++
Join Date: 07.09.2006
Location: СПб
Quote:
Originally Posted by slivka_83 View Post
А как в письме перечислить все заказанные продукты?
Есть трабл, такая же хреновина была со слиянием. Из перечня продуктов (предложения, заказа) брался ока первый продукт.
Решение валялось где-то, не помню.
Думаю и тута можно решить!
К сожалению CRM не щупал уже больше 9ти месяцев, проверить не могу
__________________
Old 11.09.2009, 14:02   #10  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Join Date: 20.08.2009
Location: Россия, Сыктывкар
Quote:
Originally Posted by slivka_83 View Post
Кстати... может быть Вам отчет написать и отсылать его по расписанию?
хм...хорошая мысль. Только немного не понимаю как это реальзовать. Из WorkFlow можно как то это сделать?
Old 11.09.2009, 14:04   #11  
slivka_83 is offline
slivka_83
Консультант-джедай
slivka_83's Avatar
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Join Date: 18.12.2008
Location: default city
Quote:
Originally Posted by Bondonello View Post
А по вопросу: Может будете ссылку на заказ в письме передавать, они будут на нее нажимать и видеть все что им надо
+ (1000*колво_бухов) вечно зеленых
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Old 11.09.2009, 14:06   #12  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Join Date: 20.08.2009
Location: Россия, Сыктывкар
Quote:
Originally Posted by Bondonello View Post
А потом бухгалтера делают Заказ в 1С? Если да, то уже существуют готовые решения по передачи объектов (Заказов, Организаций...) из CRM в 1С ну и наоборот соответственно, правда стоят денег. Зато автоматизация и уверенность в том, что бухгалтер не ошибется при переписывании/копировании заказа, его данных, продуктов.

А по вопросу: Может будете ссылку на заказ в письме передавать, они будут на нее нажимать и видеть все что им надо
Про коннекторы знаю. Это будет следующий этап.. Нужно еще урегулировать вопрос с Гл. бух. Они никого близко к 1с не подпускают.
По вопросу: Тоже хорошая идея. Есть ссылка на решение как это реализавать?
Old 11.09.2009, 14:06   #13  
slivka_83 is offline
slivka_83
Консультант-джедай
slivka_83's Avatar
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Join Date: 18.12.2008
Location: default city
Quote:
Originally Posted by datfi View Post
хм...хорошая мысль. Только немного не понимаю как это реальзовать. Из WorkFlow можно как то это сделать?
Нет нужно писать отчет в Visual Studio или в встроенном (в CRM) редакторе отчетов ... затем использовать механизм Reporting Services для рассылки
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Old 11.09.2009, 14:06   #14  
Bondonello is offline
Bondonello
Kostya Afendikov
Bondonello's Avatar
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Join Date: 06.06.2008
Location: Украина
Quote:
Originally Posted by slivka_83 View Post
+ (1000*колво_бухов) вечно зеленых
Сомневаюсь, что колво_бухов, которые работают с заказами из CRM больше 2х человек. Хотя, конечно, не известно есть ли свободные лицензии + всегда можно найти выход
Old 11.09.2009, 14:08   #15  
Bondonello is offline
Bondonello
Kostya Afendikov
Bondonello's Avatar
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Join Date: 06.06.2008
Location: Украина
Quote:
Originally Posted by datfi View Post
Про коннекторы знаю. Это будет следующий этап.. Нужно еще урегулировать вопрос с Гл. бух. Они никого близко к 1с не подпускают.
По вопросу: Тоже хорошая идея. Есть ссылка на решение как это реализавать?
Формирование ссылки в письме через воркфлоу точно обсуждалось на форуме + a33ik реализовал http://a33ik.blogspot.com/2009/06/cr...record-in.html
Old 11.09.2009, 14:11   #16  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Join Date: 20.08.2009
Location: Россия, Сыктывкар
Quote:
Originally Posted by slivka_83 View Post
Нет нужно писать отчет в Visual Studio или в встроенном (в CRM) редакторе отчетов ... затем использовать механизм Reporting Services для рассылки
а механизм RS может срабатывать на создание новой записи заказа?
Old 11.09.2009, 14:12   #17  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Join Date: 20.08.2009
Location: Россия, Сыктывкар
Quote:
Originally Posted by Bondonello View Post
Сомневаюсь, что колво_бухов, которые работают с заказами из CRM больше 2х человек. Хотя, конечно, не известно есть ли свободные лицензии + всегда можно найти выход
Мы партнеры MS. Лицензий хватает
Old 11.09.2009, 14:15   #18  
a33ik is offline
a33ik
Чайный пьяница
a33ik's Avatar
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Join Date: 02.07.2008
Location: Greenville, SC
Делал подобную кастомизацию с тем отличием, что это всё выполнялось не из заказа, а из предложения.

Итак идея:
1. Отключаем фильтрацию параметров в CRM - добавляете параметр в ветку реестра HKEY_Local_Machine\Software\Microsoft\MSCRM
DWORD DisableParameterFilter = 1 и выполняете iisreset.
2. Добавляете через ISV конфиг кнопку в сущность, из которой надо вызывать открытие письма с заполнением тела деталями. Суть - открыть новое письмо с дополнительным параметром в строке по наличию которого анализируется, что надо заполнить тело письма. Код кнопки:

Code:
        <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 + '&amp;pType='+crmForm.ObjectTypeCode+ '&amp;pName=' + crmForm.all.name.DataValue + '&amp;FillWithQuoteDetails=1'; window.open(url);">
              <Titles>
                <Title LCID="1049" Text="Заявка на информацию" />
              </Titles>
              <ToolTips>
                <ToolTip LCID="1049" Text="Заявка на информацию" />
              </ToolTips>
            </Button>
          </ToolBar>
	</Entity>
3. Написание OnLoad карточки email, который проверит наличие доп параметра и если он присутствует при помощи Fetch вытащит все нужные данные и сформирует тело письма.

Code:
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>&lt;fetch mapping='logical'&gt;"+
	"&lt;entity name='quotedetail'&gt;"+
	"&lt;attribute name='productdescription'/&gt;"+
	"&lt;attribute name='quantity'/&gt;"+
	"&lt;attribute name='productid'/&gt;"+
	"&lt;attribute name='uomid'/&gt;"+
	"&lt;filter type='and'&gt;"+
	"&lt;condition attribute='quoteid' operator='eq' value='" + quoteid + "'/&gt;"+
	"&lt;/filter&gt;"+
	"&lt;/entity&gt;"+
	"&lt;/fetch&gt;</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('&lt;','<');
	resultSet.replace('&gt;','>');

	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
This post has been rated by: datfi (1).
Old 11.09.2009, 14:25   #19  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Join Date: 20.08.2009
Location: Россия, Сыктывкар
Quote:
Originally Posted by a33ik View Post
Делал подобную кастомизацию с тем отличием, что это всё выполнялось не из заказа, а из предложения.

Итак идея:
1. Отключаем фильтрацию параметров в CRM - добавляете параметр в ветку реестра HKEY_Local_Machine\Software\Microsoft\MSCRM
DWORD DisableParameterFilter = 1 и выполняете iisreset.
2. Добавляете через ISV конфиг кнопку в сущность, из которой надо вызывать открытие письма с заполнением тела деталями. Суть - открыть новое письмо с дополнительным параметром в строке по наличию которого анализируется, что надо заполнить тело письма. Код кнопки:

Code:
        <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 + '&amp;pType='+crmForm.ObjectTypeCode+ '&amp;pName=' + crmForm.all.name.DataValue + '&amp;FillWithQuoteDetails=1'; window.open(url);">
              <Titles>
                <Title LCID="1049" Text="Заявка на информацию" />
              </Titles>
              <ToolTips>
                <ToolTip LCID="1049" Text="Заявка на информацию" />
              </ToolTips>
            </Button>
          </ToolBar>
	</Entity>
3. Написание OnLoad карточки email, который проверит наличие доп параметра и если он присутствует при помощи Fetch вытащит все нужные данные и сформирует тело письма.

Code:
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>&lt;fetch mapping='logical'&gt;"+
	"&lt;entity name='quotedetail'&gt;"+
	"&lt;attribute name='productdescription'/&gt;"+
	"&lt;attribute name='quantity'/&gt;"+
	"&lt;attribute name='productid'/&gt;"+
	"&lt;attribute name='uomid'/&gt;"+
	"&lt;filter type='and'&gt;"+
	"&lt;condition attribute='quoteid' operator='eq' value='" + quoteid + "'/&gt;"+
	"&lt;/filter&gt;"+
	"&lt;/entity&gt;"+
	"&lt;/fetch&gt;</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('&lt;','<');
	resultSet.replace('&gt;','>');

	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);
}
Надеюсь, что Вам пригодится. Чтобы под заказ переделать - не думаю, что будет много работы.
Самое оно то. Только вопрос HKEY_Local_Machine\Software\Microsoft\MSCRM
DWORD DisableParameterFilter = 1 на что еще повлияет? Какую фильтрацию оно отключает?
Old 11.09.2009, 14:29   #20  
slivka_83 is offline
slivka_83
Консультант-джедай
slivka_83's Avatar
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Join Date: 18.12.2008
Location: default city
Этот ключь разрешает передавать дополнительные параметры в адресной строке (браузера) на формы CRM. Если не включить этот флаг при добавлении параметра в адресноую строку форма свалится с ошибкой
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
Microsoft Dynamics CRM Team Blog: Troubleshooting the Microsoft Dynamics CRM E-mail Router Blog bot Dynamics CRM: Blogs 0 09.01.2009 06:03
Отправка e-mail sergeyjb Dynamics CRM: Разработка 4 03.10.2008 13:36
Microsoft Dynamics CRM Team Blog: Microsoft Dynamics CRM E-mail Router and Exchange 2007: Keeping it Secure Blog bot Dynamics CRM: Blogs 0 14.07.2008 13:05
Отправка E-mail Temnozor Dynamics CRM: Администрирование 0 31.03.2006 13:05
Отправка Direct e-mail sasha_sto Dynamics CRM: Функционал 0 31.10.2005 12:03

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 02:53.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.