otpravka_pechatnoj_formi_na_pochtu_email

Отправка печатной форми на почту (eMail) с вложением и регистрацией исходящего письма в док.ПисьмаИсходящие

РаботаСоСделками.ОтправитьСчетНаПочту(ЭтотОбъект.Ссылка);
Процедура ОтправитьСчетНаПочту(Сделка) Экспорт
	
	МассивПечати = Новый Массив;
	
	//1 ищем по документу-основанию
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ЗаказКлиента.Ссылка
	|ИЗ
	|	Документ.ЗаказКлиента КАК ЗаказКлиента
	|ГДЕ
	|	ЗаказКлиента.Сделка = &ДокументОснование
	|	И ЗаказКлиента.Проведен
	|	И ЗаказКлиента.ЭтоСчет";
	
	Запрос.УстановитьПараметр("ДокументОснование", Сделка);
	РезультатЗапроса = Запрос.Выполнить();
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл	
		МассивПечати.Добавить(ВыборкаДетальныеЗаписи.Ссылка);	
	КонецЦикла;
			
	
	//2. Ищем по структуре подчиненности (т.к. в ЗаказКлиента.Сделка может біть упрзаказ клиента а не заказ с сайта	
	Если МассивПечати.Количество()=0 Тогда 
		Запрос = Новый Запрос;
		Запрос.Текст = 
		"ВЫБРАТЬ
		|	СвязанныеДокументы.Ссылка
		|ИЗ
		|	КритерийОтбора.СвязанныеДокументы(&ДокументОснование) КАК СвязанныеДокументы
		|ГДЕ
		|	СвязанныеДокументы.Ссылка.Проведен
		|	И СвязанныеДокументы.Ссылка.ЭтоСчет";
		
		Запрос.УстановитьПараметр("ДокументОснование", Сделка);
		
		РезультатЗапроса = Запрос.Выполнить();
		
		ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
		
		Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
			МассивПечати.Добавить(ВыборкаДетальныеЗаписи.Ссылка);
		КонецЦикла;
	КонецЕсли;	
	
	
	
	//3. Отправка на Емаил
	Если МассивПечати.Количество()>0 Тогда 	
		СтруктураТипов = Новый Соответствие;
		СтруктураТипов.Вставить("Документ.ЗаказКлиента", МассивПечати);
		ПараметрыПечати = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
		ОбъектыПечати = Новый СписокЗначений;
		ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();
		
		ТабДокумент = Обработки.ПечатьСчетовНаОплату.СформироватьПечатнуюФормуСчетНаОплату(СтруктураТипов, ОбъектыПечати, ПараметрыПечати, ПараметрыВывода);
		
		ИмяФайла = КаталогВременныхФайлов() + "bill.pdf";
		ТабДокумент.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.PDF);
		Данные = Новый ДвоичныеДанные(ИмяФайла);
		
		Результат = ОтправитьТабличныйДокументЭлектроннойПочтойКакPDF(РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Учетная запись для отправки письма"),
		Сделка._ЕмайлДляСчета,
		"",
		РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Тема письма со счетом"),
		Данные,
		МассивПечати[0]);
			
		//Результат = ОтправитьТабличныйДокументЭлектроннойПочтойКакPDF_олд(РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Учетная запись для отправки письма"),
		//Сделка._ЕмайлДляСчета,
		//"",
		//РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Тема письма со счетом"),
		//Данные); 
		
	Иначе 
		ЗаписьЖурналаРегистрации("Отправка письма счетов", УровеньЖурналаРегистрации.Ошибка,Сделка.Метаданные(),Сделка,"Ошибка отправки письма с авто-счетом по заказу "+Сделка+" т.к. не обнаружено созданных счетов");	
	КонецЕсли;
	
КонецПроцедуры
Функция ОтправитьТабличныйДокументЭлектроннойПочтойКакPDF(УчетнаяЗаписьПочтыОтправителя, ПочтаПолучателя, ТекстПисьма, ТемаПисьма, АдресТабличногоДокументаВоВременномХранилище, ДокументОснование=Неопределено)
	
	УспешноОтправлено = Ложь;
	
	Если УчетнаяЗаписьПочтыОтправителя = Неопределено Или УчетнаяЗаписьПочтыОтправителя.Пустая() Тогда	
		Возврат УспешноОтправлено;			
	КонецЕсли; 
	
	СписокПолучателей								=	Новый Массив;
	СписокПолучателей.Добавить(ПочтаПолучателя);	
	
	ВременноеХранилищеФайла = ПоместитьВоВременноеХранилище(АдресТабличногоДокументаВоВременномХранилище, Новый УникальныйИдентификатор);
	//Вложения = Новый Массив;
	//ОписаниеВложения = Новый Структура("Представление, АдресВоВременномХранилище", РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Наименование вложения в письме") + "Рахунок.pdf", ВременноеХранилищеФайла);
	//Вложения.Добавить(ОписаниеВложения);
	
	НовоеПисьмоИсходящее							=	Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
	
	НовоеПисьмоИсходящее.Автор						=	ПараметрыСеанса.ТекущийПользователь;
	НовоеПисьмоИсходящее.УчетнаяЗапись				=	УчетнаяЗаписьПочтыОтправителя;
	НовоеПисьмоИсходящее.Дата						=	ТекущаяДата();
	НовоеПисьмоИсходящее.ДатаКогдаОтправить			=	НовоеПисьмоИсходящее.Дата+1;
	НовоеПисьмоИсходящее.Кодировка					=	"UTF-8";
	НовоеПисьмоИсходящее.Важность					=	Перечисления.ВариантыВажностиВзаимодействия.Обычная;
	
	НовоеПисьмоИсходящее.ТипТекста                  =	Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст;
	НовоеПисьмоИсходящее.ЕстьВложения				=	Истина;	
	НовоеПисьмоИсходящее.Тема						=	ТемаПисьма;
	НовоеПисьмоИсходящее.Текст                      =	ТекстПисьма;
	НовоеПисьмоИсходящее.Основание					=	ДокументОснование;	
	НовоеПисьмоИсходящее.Комментарий    			=	"Создано автоматически при авто-создании счетов: "+ТекущаяДата();

	Для Каждого СтрокаПолучаетелей из СписокПолучателей Цикл
		Если НЕ ПустаяСтрока(СтрокаПолучаетелей) Тогда
			НоваяЗаписьОПолучателе							=	НовоеПисьмоИсходящее.ПолучателиПисьма.Добавить();
			НоваяЗаписьОПолучателе.Адрес					=	СокрЛП(СтрокаПолучаетелей);
			НовоеПисьмоИсходящее.СписокПолучателейПисьма	=	НовоеПисьмоИсходящее.СписокПолучателейПисьма+СокрЛП(СтрокаПолучаетелей)+";";
		КонецЕсли;
	КонецЦикла;
	
	
	Попытка
		НовоеПисьмоИсходящее.Записать(РежимЗаписиДокумента.Запись);
		УспешноЗаписано	=	Истина;
	Исключение
		ЗаписьЖурналаРегистрации("Отправка письма счетов", УровеньЖурналаРегистрации.Ошибка,,,"Ошибка отправки письма с авто-счетом "+ПочтаПолучателя+", "+ОписаниеОшибки());
		УспешноЗаписано	=	Ложь;	
	КонецПопытки;
	
	Если УспешноЗаписано Тогда  
		
		//Добавляем вложение с ВременногоХранилища. Вложение добавляется только к ссылке
		УправлениеЭлектроннойПочтой.ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(НовоеПисьмоИсходящее.Ссылка,ВременноеХранилищеФайла,РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Наименование вложения в письме") + "Рахунок.pdf",12);

		Попытка	
			ПисьмоОбъект						= НовоеПисьмоИсходящее.Ссылка.ПолучитьОбъект();
			ИдентификаторПисьма 				= Взаимодействия.ВыполнитьОтправкуПисьма(ПисьмоОбъект);
			ПисьмоОбъект.ИдентификаторСообщения = ИдентификаторПисьма;
			ПисьмоОбъект.СтатусПисьма    		= Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено;
			ПисьмоОбъект.ДатаОтправления 		= ТекущаяДатаСеанса();
			ПисьмоОбъект.Записать(РежимЗаписиДокумента.Проведение); 
			
			УспешноОтправлено	=	Не ПустаяСтрока(ИдентификаторПисьма);
		Исключение
			ЗаписьЖурналаРегистрации("Отправка письма счетов", УровеньЖурналаРегистрации.Ошибка,,,"Ошибка отправки письма с авто-счетом "+ПочтаПолучателя+", "+ОписаниеОшибки());
			УспешноОтправлено	=	Ложь;	
		КонецПопытки;
		
	КонецЕсли;
	
	Возврат УспешноОтправлено;
	
КонецФункции
  • /sites/data/pages/otpravka_pechatnoj_formi_na_pochtu_email.txt
  • Последнее изменение: 2024/12/19 11:36
  • tro