|
Отправка почты с вложением из регламентного задания | ☑ | ||
---|---|---|---|---|
0
xmk_okda
31.10.16
✎
14:08
|
УТ 11. Есть обработка рассылки писем с вложениями. Нужно перенести код в рег задание. Вложения в формате .pdf формируются на компе и вставляются в письмо. Но на почту приходят файлы с никаким расширением и соответственно не читаются. Т.е. я так понял просто передается двоичный код. В тестовом письме количество и объем верный, а вот с расширением беда. Поясню, если что не понятно. Пишу первый раз
|
|||
1
xmk_okda
31.10.16
✎
14:25
|
Не интересная тема? Хоть кто нибудь откликнитесь
|
|||
2
marty0701
31.10.16
✎
14:40
|
Переименовать файл из вложения, дописав ПДФ пробовал? Открывается? Показывай как вложение подсовываешь в письме.
|
|||
3
xmk_okda
31.10.16
✎
14:45
|
камнями можно, только не большими.
Пока Выборка.Следующий() Цикл ПодготовитьПечатныеФормы(АдресПечатныхФорм,ОчерПартнер.Партнер); ЭлПисьмо = СоздатьЭлПисьмо(Никишин,Выборка.АдресЭП,"тест","Если нет доков, значит не работает нафиг",); ПечатныеФормы1 = ПолучитьИзВременногоХранилища(АдресПечатныхФорм); СписокДоков = ПечатныеФормы1.ВыгрузитьКолонку("ТабличныйДокумент"); СоотвВложения = Новый Соответствие; НомерДока = 1; Для Каждого ТабДок Из СписокДоков Цикл ВремФайл = ПолучитьИмяВременногоФайла("pdf"); ТабДок.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF); МойДок = Новый ДвоичныеДанные(ВремФайл); ХранилищеДока = Новый ХранилищеЗначения(МойДок); ПараметрыПисьма = Новый Структура; ПараметрыПисьма.Вставить("Кому", ЭлПисьмо.СписокПолучателейПисьма); ПараметрыПисьма.Вставить("Тема", ЭлПисьмо.Тема); ПараметрыПисьма.Вставить("Тело", ЭлПисьмо.Текст); ПараметрыПисьма.Вставить("Кодировка", ЭлПисьмо.Кодировка); ПараметрыПисьма.Вставить("ТипТекста", ЭлПисьмо.ТипТекста); ПараметрыПисьма.Вставить("Важность", УправлениеЭлектроннойПочтой.ПолучитьВажность(ЭлПисьмо.Важность)); ПараметрыПисьма.Вставить("УведомитьОДоставке", ЭлПисьмо.УведомитьОДоставке); ПараметрыПисьма.Вставить("УведомитьОПрочтении", ЭлПисьмо.УведомитьОПрочтении); Если НЕ ПустаяСтрока(ЭлПисьмо.ИдентификаторыОснований) Тогда ПараметрыПисьма.Вставить("ИдентификаторыОснований", ЭлПисьмо.ИдентификаторыОснований); КонецЕсли; ДанныеПрисоединенныхФайловПисьма = ВзаимодействияПереопределяемый.ПолучитьДанныеОбъектаМетаданныхПрисоединенныхФайловПисьма(ЭлПисьмо); Если ДанныеПрисоединенныхФайловПисьма = Неопределено Тогда ИмяОбъектаМетаданных = УправлениеЭлектроннойПочтой.ПолучитьИмяОбъектаМетаданныхПрисоединенныхФайловПисьма(ЭлПисьмо.Ссылка); ВладелецФайлов = ЭлПисьмо.Ссылка; Иначе ИмяОбъектаМетаданных = ДанныеПрисоединенныхФайловПисьма.ИмяСправочникаПрисоединенныеФайлы; ВладелецФайлов = ДанныеПрисоединенныхФайловПисьма.Владелец; КонецЕсли; ИмяФайла = "Форма_УПД "+НомерДока; ДанныеВложения = МойДок; СтруктураДанныеВложения = Новый Структура; СтруктураДанныеВложения.Вставить("Значение", ДанныеВложения); //СтруктураДанныеВложения.Вставить("Идентификатор", Выборка.ИДФайлаЭлектронногоПисьма); СоотвВложения.Вставить(ИмяФайла, СтруктураДанныеВложения); НомерДока = НомерДока + 1; ПараметрыПисьма.Вставить("Вложения", СоотвВложения); КонецЦикла; Отправить = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(ЭлПисьмо.УчетнаяЗапись, ПараметрыПисьма); КонецЦикла; КонецЦикла; |
|||
4
AlexYurg
31.10.16
✎
14:48
|
> ИмяФайла = "Форма_УПД "+НомерДока;
И где тут .pdf ? |
|||
5
xmk_okda
31.10.16
✎
14:48
|
Ходил отладчиком, смотрел, как формируются ПараметрыПисьма, как сами вложения формируются, дошел вот до такого, что привел выше.
|
|||
6
xmk_okda
31.10.16
✎
14:50
|
(4) я даже делал "ИмяФайла = ВремФайл". А у ВремФайла есть .pdf
Один фиг не работало |
|||
7
AlexYurg
31.10.16
✎
14:51
|
(5) Попробуй вместо
ИмяФайла = "Форма_УПД "+НомерДока; написать ИмяФайла = "Форма_УПД "+НомерДока + ".pdf"; Расскажи, что получилось. |
|||
8
xmk_okda
31.10.16
✎
14:53
|
(7) тут другая проблема возникла. {ОбщийМодуль.РаботаСПочтовымиСообщениямиСлужебный.Модуль(395)}: Поле объекта не обнаружено (Идентификатор)
Тело = СтрЗаменить(Тело, Вложение.Значение.Идентификатор, ПутьКФайлу); |
|||
9
xmk_okda
31.10.16
✎
14:54
|
я не понимаю, что за Идентификатор и с чем его хавают
|
|||
10
YFedor
31.10.16
✎
14:57
|
(8) А это откуда? У тебя же письма формируются и отправляются - правда?
|
|||
11
xmk_okda
31.10.16
✎
15:07
|
Сделал (7).
Пришло 5 писем (ибо 5 вложений должно было быть), но вложений нет. Только текст письма. Пока Выборка.Следующий() Цикл ПодготовитьПечатныеФормы(АдресПечатныхФорм,ОчерПартнер.Партнер); ЭлПисьмо = СоздатьЭлПисьмо(Никишин,Выборка.АдресЭП,"тест","Если нет доков, значит не работает нафиг",); ПечатныеФормы1 = ПолучитьИзВременногоХранилища(АдресПечатныхФорм); СписокДоков = ПечатныеФормы1.ВыгрузитьКолонку("ТабличныйДокумент"); СоотвВложения = Новый Соответствие; НомерДока = 1; Для Каждого ТабДок Из СписокДоков Цикл ВремФайл = ПолучитьИмяВременногоФайла("pdf"); ТабДок.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF); МойДок = Новый ДвоичныеДанные(ВремФайл); ХранилищеДока = Новый ХранилищеЗначения(МойДок); ПараметрыПисьма = Новый Структура; ПараметрыПисьма.Вставить("Кому", ЭлПисьмо.СписокПолучателейПисьма); ПараметрыПисьма.Вставить("Тема", ЭлПисьмо.Тема); ПараметрыПисьма.Вставить("Тело", ЭлПисьмо.Текст); ПараметрыПисьма.Вставить("Кодировка", ЭлПисьмо.Кодировка); ПараметрыПисьма.Вставить("ТипТекста", ЭлПисьмо.ТипТекста); ПараметрыПисьма.Вставить("Важность", УправлениеЭлектроннойПочтой.ПолучитьВажность(ЭлПисьмо.Важность)); ПараметрыПисьма.Вставить("УведомитьОДоставке", ЭлПисьмо.УведомитьОДоставке); ПараметрыПисьма.Вставить("УведомитьОПрочтении", ЭлПисьмо.УведомитьОПрочтении); Если НЕ ПустаяСтрока(ЭлПисьмо.ИдентификаторыОснований) Тогда ПараметрыПисьма.Вставить("ИдентификаторыОснований", ЭлПисьмо.ИдентификаторыОснований); КонецЕсли; ДанныеПрисоединенныхФайловПисьма = ВзаимодействияПереопределяемый.ПолучитьДанныеОбъектаМетаданныхПрисоединенныхФайловПисьма(ЭлПисьмо); Если ДанныеПрисоединенныхФайловПисьма = Неопределено Тогда ИмяОбъектаМетаданных = УправлениеЭлектроннойПочтой.ПолучитьИмяОбъектаМетаданныхПрисоединенныхФайловПисьма(ЭлПисьмо.Ссылка); ВладелецФайлов = ЭлПисьмо.Ссылка; Иначе ИмяОбъектаМетаданных = ДанныеПрисоединенныхФайловПисьма.ИмяСправочникаПрисоединенныеФайлы; ВладелецФайлов = ДанныеПрисоединенныхФайловПисьма.Владелец; КонецЕсли; ИмяФайла = "Форма_УПД "+НомерДока + ".pdf"; ДанныеВложения = МойДок; ИдентификаторПочтовогоВложения=""; СтруктураДанныеВложения = Новый Структура; СтруктураДанныеВложения.Вставить("Значение", ДанныеВложения); СтруктураДанныеВложения.Вставить("Идентификатор", ИдентификаторПочтовогоВложения); СоотвВложения.Вставить(ИмяФайла, СтруктураДанныеВложения); НомерДока = НомерДока + 1; ПараметрыПисьма.Вставить("Вложения", СоотвВложения); КонецЦикла; Отправить = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(ЭлПисьмо.УчетнаяЗапись, ПараметрыПисьма); КонецЦикла; КонецЦикла; |
|||
12
Gantosha
31.10.16
✎
15:10
|
ДанныеВложения = МойДок; но вообще конечно надо смотреть что ты там цепляешь к письму ..
|
|||
13
Gantosha
31.10.16
✎
15:11
|
так вот там у тебя точно двоичные данные .. но разбираться конечно лень, что вы там понаписали.
|
|||
14
xmk_okda
01.11.16
✎
05:49
|
средства отправки конфы засовывают файлы, выбранные через форму в рег. сведений или в справочник "элПисьмаИсходящ",а потом выборкой их оттуда достают. У меня такого нет, может в этом проблема
|
|||
15
xmk_okda
01.11.16
✎
05:50
|
"элПисьмаИсходящПрикрепленныеФайлы"
|
|||
16
xmk_okda
01.11.16
✎
07:15
|
Проблема решилась
Вместо ИмяФайла = "Форма_УПД "+НомерДока + ".pdf"; ДанныеВложения = МойДок; ИдентификаторПочтовогоВложения=""; СтруктураДанныеВложения = Новый Структура; СтруктураДанныеВложения.Вставить("Значение", ДанныеВложения); СтруктураДанныеВложения.Вставить("Идентификатор", ИдентификаторПочтовогоВложения); СоотвВложения.Вставить(ИмяФайла, СтруктураДанныеВложения); НомерДока = НомерДока + 1; ПараметрыПисьма.Вставить("Вложения", СоотвВложения); Написал ИмяФайла = "Форма_УПД "+НомерДока + ".pdf"; ДанныеВложения = МойДок; ИдентификаторПочтовогоВложения=""; СтруктураДанныеВложения = Новый Структура; СтруктураДанныеВложения.Вставить("Значение", ДанныеВложения); СтруктураДанныеВложения.Вставить("Идентификатор", ИдентификаторПочтовогоВложения); СоотвВложения.Вставить(ИмяФайла, ДанныеВложения); НомерДока = НомерДока + 1; ПараметрыПисьма.Вставить("Вложения", СоотвВложения); |
|||
17
xmk_okda
01.11.16
✎
07:16
|
всем спасибо за внимание
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |