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

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

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

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

Итак идея:
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 + '&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 вытащит все нужные данные и сформирует тело письма.

Код:
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
За это сообщение автора поблагодарили: datfi (1).
Старый 11.09.2009, 14:25   #19  
datfi is offline
datfi
Участник
 
240 / 15 (1) ++
Регистрация: 20.08.2009
Адрес: Россия, Сыктывкар
Цитата:
Сообщение от 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 + '&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 вытащит все нужные данные и сформирует тело письма.

Код:
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 на что еще повлияет? Какую фильтрацию оно отключает?
Старый 11.09.2009, 14:29   #20  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Этот ключь разрешает передавать дополнительные параметры в адресной строке (браузера) на формы CRM. Если не включить этот флаг при добавлении параметра в адресноую строку форма свалится с ошибкой
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
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
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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