otpravka_pechatnoj_formi_na_pochtu_email

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

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