|   |   | 
| 
 | Отправка почты с вложением из регламентного задания | ☑ | ||
|---|---|---|---|---|
| 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 | 
        всем спасибо за внимание     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |