Есть необходимость в автоматической рассылке сообщений о проведенной оплате на электронные адреса. Эту проблему мы в компании решили.
Примерно- это так:
Адрес=АдресЭлПочты;
СтруктураНовогоПисьма = Новый Структура;
Если НЕ ПустаяСтрока(Адрес) Тогда
СписокКому = Новый СписокЗначений;
СписокКому.Добавить(Адрес, Значение.Наименование);
СтруктураНовогоПисьма.Вставить("Кому", СписокКому);
КонецЕсли;
СтруктураНовогоПисьма.Вставить("Тема",ТемаСообщения);
СтруктураНовогоПисьма.Вставить("Тело",Текст.ПолучитьТекст());
#Если Клиент Тогда
НаписатьПисьмо(глТекущийПользователь,СтруктураНовогоПисьма,,,);
#КонецЕсли
где ТЕКСТ- это Текст=Новый ТекстовыйДокумент (); который содержит сформированное сообщение.
НО хотелось бы пользоватся не только встроенной почтой, а при этом не получается в ТЕЛО письма вставить объемный текс ?????
Помогите!!!
И хочется иметь возможность отправлять документы электронным письмом, а как поместить готовый документ для печати в ТЕЛО электронного письма???
Поясни свою мысль:
> НО хотелось бы пользоватся не только встроенной почтой, а при этом не получается в
> ТЕЛО письма вставить объемный текс ?????
Текст письма = это реквизит типа строка неопределенной длины. Допускаю, что под словом "неопределенной" программисты 1С понимают достаточно большую, но все-таки конечную цыферку.
На какое ограничение ты конкретно нарвался?
Статью нашел, но после того как создал тему.
Но есть проблема. Она заключается в том, что надо в тело письма вставить документ. Что я имею ввиду. Я не мого получить ( точнее еще не знаю как это сделать) документ в виде текста письма.
Т.е. есть документ (пусть это будет счет на оплату- заказ покупателя), есть функция печати, где документ выводится на печать. Так вот вопрос как привязаться к этому и вывести документ в тело письма для его последующей отправки?????
SergeyTSM_SPB Написал:
-------------------------------------------------------
> Т.е. есть документ (пусть это будет счет на
> оплату- заказ покупателя), есть функция печати,
> где документ выводится на печать. Так вот вопрос
> как привязаться к этому и вывести документ в тело
> письма для его последующей отправки?????
Именно об этом я пыталась написать в статье. Если брать типовую кнфигурацию УТ, то получить табличный документ, сформированный методом Печать() любого документа штатными средствами нельзя.
Это можно сделать с помощью небольшого изменения конфигурации.
Прочитал, все хорошо. НО при этом документ отправляется в виде вложенного файла, а веду речь о том, чтобы отправить Не во вложении, а в ТЕЛЕ письма, когда получатель открывает письмо и сразу видит документ и там нет ни каких вложенных файлов.
В этом-то и проблема. Но при этом если есть возможность переформировать ТабличныйДокумент в ТекстовойДокумент(), то используя внутреннего почтового клиента (1С) это сделать не сложно. Так вот как из ТабДокумента сделать ТекстовойДокумент.
Пробовал :
Для каждого СтрокаТабличногоДокумента Из ТабличногоДокумента Цикл НО !!!!
Пока не получается.
Как оно и что в 8-ке я в курсах, но вспомни, как в старые досовские времена
времена формировали документы при помощи вертикальных и горизонтальных палочек. Может тебе сразу самому строить счето-подобный текстовик и пихать его в письмо.... Помню, занимался подобной ерундой, когда надо было распечатать много оборотно-сальдовых на каком-то диком барабанном печатающем устройстве;)
2Poppy
Не у всех почтовики настроены на чтение html. ИМХО, если уж такое дикое желание всадить прям в текст письма - надо сразу тесктовик и формировать
Спасибо, за подсказку. Я сам уже понял, что это самый правильный путь. Сделал кое какие шаги, но встретил ряд препятствий. Вот вопрос, средствами 1С можно ли перевести формат таблицы в HTML формат. Если да, то как. Можно же сохранить в файл в указанном формате, а как перевести ТабличныйДокумент в Формат HTML.
А можно теперь не в файл, а получить HTML формат в виде Текст=Новый ТекстовыйДокумент (), где в строки будут включены HTML-теги? Потом проще будет это вставить в тело письма. Текст.ПолучитьТекст() и все.
Может быть, но есть задача отправки документа в теле письма и с ней надо справится. Это неудобно тем, что в теле письма можно отправить только один документ, но есть положительные стороны- покупатель получает счет и видит его сразу на экране. (Запросите счет на оплату в компании ООО ЭТМ).
Изврат однозначно!
Пара наших клиентов тоже набирали заявки прямо в теле письма вручную (!!!!?????) - стоило один раз не получить товар - сходу дотумкали (я просто не передал заявки в одел сбыта - какая я все-таки сволочь....)
Кстати, только что наблюдал картину: юзер формирует письмо (ЗеБат), прифигачивает заказ - два файла (текстовый и ДБФ). Так вот господа: текстовый файл аптоматом отдельной закладкой втыкается в тело письма. Так что не надо нас дурить... Или не ту травку курите (в смысле - выбирайте "правильные" пацанские почтовики).
Серега - не морочь селедке голову ерундой... Формируй тектовый файл, присобачивай, а клиент пусть выбирает - то ли вложение, то ли выцарапывает данные из тела письма. Посимвольно! (если мазохист...)
SergeyTSM_SPB Написал:
-------------------------------------------------------
> А можно теперь не в файл, а получить HTML формат в
> виде Текст=Новый ТекстовыйДокумент (), где в
> строки будут включены HTML-теги?
Как поступить с внешними почтовыми программами, я еще не пробовал. А вот, когда используешь встроенный почтовый клиент, то достаточно хорошо получается опция- уведомление поставщика о проведенной оплате. (Это по просьбе поставщика). Я сделал в момент выгрузки файла Клиент-Банком формируется сообщение, где в тело письма приписывается информация о Номере платежного поручения, сумме платежа, назначении платежа. Адрес отправки сообщения берется из карточки, где я ввел "Электронный адрес для оповещения о проведении платежа". Все работает и нет нареканий о том, что не получили информацию и .... (ну как обычно). В тело сообщения это попадает так:
Адрес=АдресЭлПочты;
СтруктураНовогоПисьма = Новый Структура;
Если НЕ ПустаяСтрока(Адрес) Тогда
СписокКому = Новый СписокЗначений;
СписокКому.Добавить(Адрес, Значение.Наименование);
СтруктураНовогоПисьма.Вставить("Кому", СписокКому);
КонецЕсли;
СтруктураНовогоПисьма.Вставить("Тема",ТемаСообщения);
СтруктураНовогоПисьма.Вставить("Тело",Текст.ПолучитьТекст());
#Если Клиент Тогда
НаписатьПисьмо(глТекущийПользователь,СтруктураНовогоПисьма,,,);
#КонецЕсли
Ну а с внешними почтовиками надо попробывать.
Через файл удобней, но есть проблема которую тоже надо решить. Это картинки (печать, подписи, логотип и т.п.). Как имея их в файле перетащить вместе с текстом в тело письма. Текст уже выяснили просто:
Получив документ в виде ТабличногоДокумента сохраняем его в файл в формате HTML, затем Текст.Прочитать (ЭтотФайл) и соответственно вставить в СтруктуруПисьма.
Все хорошо, а КАРТИНКИ как?
Прошу помощи.
SergeyTSM_SPB Написал:
-------------------------------------------------------
> Через файл удобней,
Мне показалось, что ты был принципиальным противником такого способа. ;)
> но есть проблема которую тоже
> надо решить. Это картинки (печать, подписи,
> логотип и т.п.). Как имея их в файле перетащить
> вместе с текстом в тело письма.
Попробуй так. Создай табличный документ с картинкой. Сохрани его как ХТМЛ и посмотри что он сделает с картинками. Напиши нам- будем думать.
Табличный документ сохраняя в файл как ХТМЛ с картинками делает все хорошо. Открыв файл, там все на своем месте , а вот когда читаешь файл Текст.Прочитать(), картинок там нет. А как?
Что бы хранить картинку внутри HTML, нужно кодировать её в Base64, присваивать ей ключ, а ссылки на картинку заменять ссылками на этот ключ, типа так: IMG SRC="cid: бла-бла"
Вот например, как сделать это средствами PHP: http://phpclub.ru/detail/article/mail?printVersion=1#part_3