|
Вытащить вложение из эл. письма без создания доп. элементов в базе. | ☑ | ||
---|---|---|---|---|
0
IBTM
28.03.14
✎
11:33
|
с обратным действием (вложить в письмо файл и отправить) более менее понятно.
Подключаюсь к почте с помощью почтового клиента... в письме вложение Если исползовать типовые средства то 1ска зоздаёт док "Эл письмо" и т.д и т.п. Не хочется создавать дополнительные объекты в базе, это как то реализуемо, или нужно будет делать по аналогии типового алгоритма? Если ИнтернетПисьмо.Вложения.Количество() > 0 И НЕ ИсключениеТранзакции Тогда Для каждого Вложение Из ИнтернетПисьмо.Вложения Цикл Если Вложение.Данные = Неопределено Тогда Продолжить; КонецЕсли; НовоеВложение = Справочники.ВложенияЭлектронныхПисем.СоздатьЭлемент(); Если НЕ ПустаяСтрока(Вложение.Идентификатор) Тогда Письмо.ВидТекстаПисьма = Перечисления.ВидыТекстовЭлектронныхПисем.HTMLСКартинками; КонецЕсли; НовоеВложение.ИДФайлаПочтовогоПисьма = Вложение.Идентификатор; Если ТипЗнч(Вложение.Данные) = Тип("ИнтернетПочтовоеСообщение") Тогда НовоеВложение.ИмяФайла = ?(ПустаяСтрока(Вложение.Имя), (ИнтернетПисьмо.ИдентификаторСообщения), Вложение.Имя) + ".msg"; Иначе НовоеВложение.ИмяФайла = Вложение.Имя; КонецЕсли; НовоеВложение.Объект = Письмо.Ссылка; НовоеВложение.Хранилище = Новый ХранилищеЗначения(Вложение.Данные, Новый СжатиеДанных()); Если ТипЗнч(Письмо.ПредметКонтакта) = Тип("СправочникСсылка.ФизическиеЛица") Тогда НовоеВложение.Предмет = Письмо.ПредметКонтакта; Иначе НовоеВложение.Предмет = Справочники.ФизическиеЛица.ПустаяСсылка(); КонецЕсли; Попытка НовоеВложение.Записать(); Исключение ИсключениеТранзакции = Истина; ОшибкаИсключенияТранзакции = ОписаниеОшибки(); Прервать; КонецПопытки; КонецЦикла; Если НЕ ИсключениеТранзакции Тогда ОчиститьПисьмо(ИнтернетПисьмо); Письмо.ПочтовоеСообщение = Новый ХранилищеЗначения(ИнтернетПисьмо, Новый СжатиеДанных()); Попытка Письмо.Записать(); Исключение ИсключениеТранзакции = Истина; ОшибкаИсключенияТранзакции = ОписаниеОшибки(); ОтменитьТранзакцию(); Прервать; КонецПопытки; Иначе ОтменитьТранзакцию(); Прервать; КонецЕсли; КонецЕсли; |
|||
1
IBTM
28.03.14
✎
11:52
|
НовоеВложение = Справочники.ВложенияЭлектронныхПисем.СоздатьЭлемент();
Если НЕ ПустаяСтрока(Вложение.Идентификатор) Тогда Письмо.ВидТекстаПисьма = Перечисления.ВидыТекстовЭлектронныхПисем.HTMLСКартинками; КонецЕсли; НовоеВложение.ИДФайлаПочтовогоПисьма = Вложение.Идентификатор; Если ТипЗнч(Вложение.Данные) = Тип("ИнтернетПочтовоеСообщение") Тогда НовоеВложение.ИмяФайла = ?(ПустаяСтрока(Вложение.Имя), (ИнтернетПисьмо.ИдентификаторСообщения), Вложение.Имя) + ".msg"; Иначе НовоеВложение.ИмяФайла = Вложение.Имя; КонецЕсли; НовоеВложение.Объект = Письмо.Ссылка; НовоеВложение.Хранилище = Новый ХранилищеЗначения(Вложение.Данные, Новый СжатиеДанных()); Если ТипЗнч(Письмо.ПредметКонтакта) = Тип("СправочникСсылка.ФизическиеЛица") Тогда НовоеВложение.Предмет = Письмо.ПредметКонтакта; Иначе НовоеВложение.Предмет = Справочники.ФизическиеЛица.ПустаяСсылка(); КонецЕсли; Попытка НовоеВложение.Записать(); Исключение ИсключениеТранзакции = Истина; ОшибкаИсключенияТранзакции = ОписаниеОшибки(); Прервать; КонецПопытки; как то можно это обойти, незаметно для базы? |
|||
2
IBTM
28.03.14
✎
12:09
|
кто как вообще вытаскивает вложения из писем через 1с?)
|
|||
3
IBTM
28.03.14
✎
12:42
|
ну и правильно, кому это надо...
|
|||
4
Chubrik
28.03.14
✎
13:01
|
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераPOP3 = "mail.yandex.ru"; Профиль.ПортPOP3 = 110; Профиль.Пользователь = "[email protected]"; Профиль.Пароль = "12345"; Почта = Новый ИнтернетПочта; Попытка Почта.Подключиться(Профиль); Исключение Предупреждение(ОписаниеОшибки()); Возврат; КонецПопытки; Сообщения = Почта.Выбрать(ложь); Для каждого ТекСообщение из Сообщения Цикл Если ТекСообщение.Вложения.Количество() <> 0 Тогда Для каждого ТекВложение из ТекСообщение.Вложения Цикл НоваяСтрока = ПринятыеФайлы.Добавить(); НоваяСтрока.Идентификатор = ТекСообщение.Идентификатор[0]; Расширение = ВРег(Прав(ТекВложение.ИмяФайла, 4)); Если Расширение <> ".XLS" и Расширение <> "XLSX" Тогда НоваяСтрока.Ошибка = "Нет вложенного Excel-файла"; Продолжить; КонецЕсли; Попытка ТекВложение.Данные.Записать(КаталогВременныхФайлов()+ТекВложение.ИмяФайла); Исключение Сообщить(КаталогВременныхФайлов()+ТекВложение.ИмяФайла); НоваяСтрока.Ошибка = "Ошибка записи файла"; Продолжить; КонецПопытки; Попытка ТекстСообщения = ТекСообщение.Тексты[0].Текст; Исключение КонецПопытки; КонецЦикла; КонецЕсли; КонецЦикла; Почта.Отключиться(); |
|||
5
IBTM
28.03.14
✎
13:22
|
(4) отлично, спасибо
получается что мы файл из писма сначала пишем кудато на диск, потом с ним работаем, гениально. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |