Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Отправка почты с вложением из регламентного задания

Отправка почты с вложением из регламентного задания
Я
   xmk_okda
 
31.10.16 - 14:08
УТ 11. Есть обработка рассылки писем с вложениями. Нужно перенести код в рег задание. Вложения в формате .pdf формируются на компе и вставляются в письмо. Но на почту приходят файлы с никаким расширением и соответственно не читаются. Т.е. я так понял просто передается двоичный код. В тестовом письме количество и объем верный, а вот с расширением беда. Поясню, если что не понятно. Пишу первый раз
 
 
   xmk_okda
 
1 - 31.10.16 - 14:25
Не интересная тема? Хоть кто нибудь откликнитесь
   marty0701
 
2 - 31.10.16 - 14:40
Переименовать файл из вложения, дописав ПДФ пробовал? Открывается? Показывай как вложение подсовываешь в письме.
   xmk_okda
 
3 - 31.10.16 - 14:45
камнями можно, только не большими.
    Пока Выборка.Следующий() Цикл
            
            ПодготовитьПечатныеФормы(АдресПечатныхФорм,ОчерПартнер.Партнер);
            ЭлПисьмо = СоздатьЭлПисьмо(Никишин,Выборка.АдресЭП,"тест","Если нет доков, значит не работает нафиг",);
            
            ПечатныеФормы1 = ПолучитьИзВременногоХранилища(АдресПечатныхФорм);
            СписокДоков = ПечатныеФормы1.ВыгрузитьКолонку("ТабличныйДокумент");
            
            СоотвВложения = Новый Соответствие;
            НомерДока = 1;
            Для Каждого ТабДок Из СписокДоков Цикл
                
                ВремФайл = ПолучитьИмяВременногоФайла("pdf");
                ТабДок.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF);
                
                МойДок = Новый ДвоичныеДанные(ВремФайл);
                ХранилищеДока = Новый ХранилищеЗначения(МойДок);
                
                ПараметрыПисьма = Новый Структура;
                ПараметрыПисьма.Вставить("Кому",        ЭлПисьмо.СписокПолучателейПисьма);
                ПараметрыПисьма.Вставить("Тема",        ЭлПисьмо.Тема);
                ПараметрыПисьма.Вставить("Тело",        ЭлПисьмо.Текст);
                ПараметрыПисьма.Вставить("Кодировка",    ЭлПисьмо.Кодировка);
                ПараметрыПисьма.Вставить("ТипТекста",    ЭлПисьмо.ТипТекста);
                ПараметрыПисьма.Вставить("Важность",    УправлениеЭлектроннойПочтой.ПолучитьВажность(ЭлПисьмо.Важность));
                ПараметрыПисьма.Вставить("УведомитьОДоставке",    ЭлПисьмо.УведомитьОДоставке);
                ПараметрыПисьма.Вставить("УведомитьОПрочтении",    ЭлПисьмо.УведомитьОПрочтении);
                Если НЕ ПустаяСтрока(ЭлПисьмо.ИдентификаторыОснований) Тогда
                    ПараметрыПисьма.Вставить("ИдентификаторыОснований", ЭлПисьмо.ИдентификаторыОснований);
                КонецЕсли;
                
                
                ДанныеПрисоединенныхФайловПисьма = ВзаимодействияПереопределяемый.ПолучитьДанныеОбъектаМетаданныхПрисоединенныхФайловПисьма(ЭлПисьмо);
                Если ДанныеПрисоединенныхФайловПисьма = Неопределено Тогда
                    ИмяОбъектаМетаданных = УправлениеЭлектроннойПочтой.ПолучитьИмяОбъектаМетаданныхПрисоединенныхФайловПисьма(ЭлПисьмо.Ссылка);
                    ВладелецФайлов       = ЭлПисьмо.Ссылка;
                Иначе
                    ИмяОбъектаМетаданных = ДанныеПрисоединенныхФайловПисьма.ИмяСправочникаПрисоединенныеФайлы;
                    ВладелецФайлов       = ДанныеПрисоединенныхФайловПисьма.Владелец;
                КонецЕсли;
                
                ИмяФайла = "Форма_УПД "+НомерДока;
                ДанныеВложения = МойДок;
                
                СтруктураДанныеВложения = Новый Структура;
                СтруктураДанныеВложения.Вставить("Значение", ДанныеВложения);
                //СтруктураДанныеВложения.Вставить("Идентификатор", Выборка.ИДФайлаЭлектронногоПисьма);

                СоотвВложения.Вставить(ИмяФайла, СтруктураДанныеВложения);
                
                
                
                НомерДока = НомерДока + 1;
                ПараметрыПисьма.Вставить("Вложения", СоотвВложения);
            КонецЦикла;
            Отправить = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(ЭлПисьмо.УчетнаяЗапись, ПараметрыПисьма);
        КонецЦикла;
    КонецЦикла;
   AlexYurg
 
4 - 31.10.16 - 14:48
> ИмяФайла = "Форма_УПД "+НомерДока;

И где тут .pdf ?
   xmk_okda
 
5 - 31.10.16 - 14:48
Ходил отладчиком, смотрел, как формируются ПараметрыПисьма, как сами вложения формируются, дошел вот до такого, что привел выше.
   xmk_okda
 
6 - 31.10.16 - 14:50
(4) я даже делал "ИмяФайла = ВремФайл". А у ВремФайла есть .pdf
Один фиг не работало
   AlexYurg
 
7 - 31.10.16 - 14:51
(5) Попробуй вместо
  ИмяФайла = "Форма_УПД "+НомерДока;

написать

  ИмяФайла = "Форма_УПД "+НомерДока + ".pdf";

Расскажи, что получилось.
   xmk_okda
 
8 - 31.10.16 - 14:53
(7) тут другая проблема возникла. {ОбщийМодуль.РаботаСПочтовымиСообщениямиСлужебный.Модуль(395)}: Поле объекта не обнаружено (Идентификатор)
                    Тело = СтрЗаменить(Тело, Вложение.Значение.Идентификатор, ПутьКФайлу);
   xmk_okda
 
9 - 31.10.16 - 14:54
я не понимаю, что за Идентификатор и с чем его хавают
   YFedor
 
10 - 31.10.16 - 14:57
(8) А это откуда? У тебя же письма формируются и отправляются - правда?
 
 Рекламное место пустует
   xmk_okda
 
11 - 31.10.16 - 15:07
Сделал (7).

Пришло 5 писем (ибо 5 вложений должно было быть), но вложений нет. Только текст письма.
Пока Выборка.Следующий() Цикл
            
            ПодготовитьПечатныеФормы(АдресПечатныхФорм,ОчерПартнер.Партнер);
            ЭлПисьмо = СоздатьЭлПисьмо(Никишин,Выборка.АдресЭП,"тест","Если нет доков, значит не работает нафиг",);
            
            ПечатныеФормы1 = ПолучитьИзВременногоХранилища(АдресПечатныхФорм);
            СписокДоков = ПечатныеФормы1.ВыгрузитьКолонку("ТабличныйДокумент");
            
            СоотвВложения = Новый Соответствие;
            НомерДока = 1;
            Для Каждого ТабДок Из СписокДоков Цикл
                
                ВремФайл = ПолучитьИмяВременногоФайла("pdf");
                ТабДок.Записать(ВремФайл,ТипФайлаТабличногоДокумента.PDF);
                
                МойДок = Новый ДвоичныеДанные(ВремФайл);
                ХранилищеДока = Новый ХранилищеЗначения(МойДок);
                
                ПараметрыПисьма = Новый Структура;
                ПараметрыПисьма.Вставить("Кому",        ЭлПисьмо.СписокПолучателейПисьма);
                ПараметрыПисьма.Вставить("Тема",        ЭлПисьмо.Тема);
                ПараметрыПисьма.Вставить("Тело",        ЭлПисьмо.Текст);
                ПараметрыПисьма.Вставить("Кодировка",    ЭлПисьмо.Кодировка);
                ПараметрыПисьма.Вставить("ТипТекста",    ЭлПисьмо.ТипТекста);
                ПараметрыПисьма.Вставить("Важность",    УправлениеЭлектроннойПочтой.ПолучитьВажность(ЭлПисьмо.Важность));
                ПараметрыПисьма.Вставить("УведомитьОДоставке",    ЭлПисьмо.УведомитьОДоставке);
                ПараметрыПисьма.Вставить("УведомитьОПрочтении",    ЭлПисьмо.УведомитьОПрочтении);
                Если НЕ ПустаяСтрока(ЭлПисьмо.ИдентификаторыОснований) Тогда
                    ПараметрыПисьма.Вставить("ИдентификаторыОснований", ЭлПисьмо.ИдентификаторыОснований);
                КонецЕсли;
                
                
                ДанныеПрисоединенныхФайловПисьма = ВзаимодействияПереопределяемый.ПолучитьДанныеОбъектаМетаданныхПрисоединенныхФайловПисьма(ЭлПисьмо);
                Если ДанныеПрисоединенныхФайловПисьма = Неопределено Тогда
                    ИмяОбъектаМетаданных = УправлениеЭлектроннойПочтой.ПолучитьИмяОбъектаМетаданныхПрисоединенныхФайловПисьма(ЭлПисьмо.Ссылка);
                    ВладелецФайлов       = ЭлПисьмо.Ссылка;
                Иначе
                    ИмяОбъектаМетаданных = ДанныеПрисоединенныхФайловПисьма.ИмяСправочникаПрисоединенныеФайлы;
                    ВладелецФайлов       = ДанныеПрисоединенныхФайловПисьма.Владелец;
                КонецЕсли;
                
                ИмяФайла = "Форма_УПД "+НомерДока + ".pdf";
                ДанныеВложения = МойДок;
                
                ИдентификаторПочтовогоВложения="";
                СтруктураДанныеВложения = Новый Структура;
                СтруктураДанныеВложения.Вставить("Значение", ДанныеВложения);
                СтруктураДанныеВложения.Вставить("Идентификатор", ИдентификаторПочтовогоВложения);
                СоотвВложения.Вставить(ИмяФайла, СтруктураДанныеВложения);
                
                
                
                НомерДока = НомерДока + 1;
                ПараметрыПисьма.Вставить("Вложения", СоотвВложения);
            КонецЦикла;
            Отправить = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(ЭлПисьмо.УчетнаяЗапись, ПараметрыПисьма);
        КонецЦикла;
    КонецЦикла;
   Gantosha
 
12 - 31.10.16 - 15:10
ДанныеВложения = МойДок; но вообще конечно надо смотреть что ты там цепляешь к письму ..
   Gantosha
 
13 - 31.10.16 - 15:11
так вот там у тебя точно двоичные данные .. но разбираться конечно лень, что вы там понаписали.
   xmk_okda
 
14 - 01.11.16 - 05:49
средства отправки конфы засовывают файлы, выбранные через форму в рег. сведений или в справочник "элПисьмаИсходящ",а потом выборкой их оттуда достают. У меня такого нет, может в этом проблема
   xmk_okda
 
15 - 01.11.16 - 05:50
"элПисьмаИсходящПрикрепленныеФайлы"
   xmk_okda
 
16 - 01.11.16 - 07:15
Проблема решилась
Вместо 
 ИмяФайла = "Форма_УПД "+НомерДока + ".pdf";
                ДанныеВложения = МойДок;
                
                ИдентификаторПочтовогоВложения="";
                СтруктураДанныеВложения = Новый Структура;
                СтруктураДанныеВложения.Вставить("Значение", ДанныеВложения);
                СтруктураДанныеВложения.Вставить("Идентификатор", ИдентификаторПочтовогоВложения);
                СоотвВложения.Вставить(ИмяФайла, СтруктураДанныеВложения);
                
                
                
                НомерДока = НомерДока + 1;
                ПараметрыПисьма.Вставить("Вложения", СоотвВложения);



Написал


ИмяФайла = "Форма_УПД "+НомерДока + ".pdf";
                ДанныеВложения = МойДок;
                
                ИдентификаторПочтовогоВложения="";
                СтруктураДанныеВложения = Новый Структура;
                СтруктураДанныеВложения.Вставить("Значение", ДанныеВложения);
                СтруктураДанныеВложения.Вставить("Идентификатор", ИдентификаторПочтовогоВложения);
                СоотвВложения.Вставить(ИмяФайла, ДанныеВложения);
                
                
                
                НомерДока = НомерДока + 1;
                ПараметрыПисьма.Вставить("Вложения", СоотвВложения);
   xmk_okda
 
17 - 01.11.16 - 07:16
всем спасибо за внимание

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует