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