Алгоритм создания и отправки электронного письма (со вложением) УТ 3.0 для Украины

20.07.15

Разработка - Математика и алгоритмы

Алгоритм позволит быстро создать письмо с вложением (например, печатная форма Заказа клиента в формате XLS) и отправить его партнеру. Для конфигурации Управление торговлей для Украины 3.0

Данный алгоритм позволит Вам сэкономить время для решения задач по отправке писем из конфигурации Управление торговлей для Украины 3.0 с вложением. Получив данную задачу, сам не нашел примеров ее решения, значит, кому-то будет полезно воспользоваться моим опытом и не тратить драгоценное время.

Еще, обратите внимание, что в типовой конфигурации (Управление торговлей для Украины 3.0.10.1) не предусмотрены настройки для работы с почтовыми серверами, требующими SSL соединения, хотя на уровне платформы 1С (8.3.5.1336) уже реализована такая возможность. Поэтому нужно внести небольшое изменение в общем модуле "Электронная почта":

Функция СформироватьИнтернетПрофиль(знач УчетнаяЗапись,
знач Пароль = Неопределено,
знач ФормироватьSMTPПрофиль = Истина,
знач ФормироватьPOP3Профиль = Истина) Экспорт

Профиль = Новый ИнтернетПочтовыйПрофиль;

//+ 2015.07.13
Профиль.ИспользоватьSSLSMTP=Истина;
Профиль.ИспользоватьSSLPOP3=Истина;
//- 2015.07.13
Профиль.Пользователь = УчетнаяЗапись.Пользователь;

........

АЛГОРИТМ СОЗДАНИЯ ЭЛЕКТРОННОГО ПИСЬМА:

// Получим менеджер печати
ИмяМенеджераПечати = "Документ.ЗаказКлиента";
МенеджерПечати = ОбщегоНазначения.МенеджерОбъектаПоПолномуИмени(ИмяМенеджераПечати);
// Подготовка параметров
МассивОбъектов = Новый Массив;
МассивОбъектов.Добавить(ОбъектДок.Ссылка);
ОбъектыПечати = Новый СписокЗначений;
ПараметрыВывода = УправлениеПечатью.ПодготовитьСтруктуруПараметровВывода();

// Формируем печатный документ Заказа клиента
Таб = МенеджерПечати.СформироватьПечатнуюФормуЗаказаКлиента(МассивОбъектов, ОбъектыПечати, ПараметрыВывода);

// Создаем документ Электронное письмо
НачатьТранзакцию();
ЭлПисьмо = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
ЭлПисьмо.УстановитьНовыйНомер();
ЭлПисьмо.Автор = ПараметрыСеанса.ТекущийПользователь;
ЭлПисьмо.Важность = Перечисления.ВариантыВажностиВзаимодействия.Обычная;
ЭлПисьмо.Дата = ТекущаяДата();
ЭлПисьмо.ДатаОтправления = ТекущаяДата();
ЭлПисьмо.Ответственный = ПараметрыСеанса.ТекущийПользователь;

// Получаем адрес эл. почты партнера
ПолучательАдрес = УправлениеКонтактнойИнформацией.ПолучитьКонтактнуюИнформацияОбъекта(ОбъектДок.Партнер, Справочники.ВидыКонтактнойИнформации.EmailПартнера);
ЭлПисьмо.СписокПолучателейПисьма = ПолучательАдрес;

// Формируем тему письма и имя файла (замените по-своему) и записываем файл xls
ИмяАгента = СокрЛП(ВыбАгент);
Тема = "Заказ " + СокрЛП(ОбъектДок.Партнер) + " (Полифарб, "+ИмяАгента+")";
НаименованиеФайла = "Заказ " + СокрЛП(ОбъектДок.Контрагент) + " от " + ИмяАгента + " " + Лев(ОбъектДок.Дата,10);

//ИмяФайла = ПолучитьИмяВременногоФайла("xls"); 
ИмяФайла = КаталогВременныхФайлов()+НаименованиеФайла+".xls";
Таб.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS);

ЭлПисьмо.Тема = Тема;
ЭлПисьмо.ЕстьВложения = Истина;

// Пример получения адреса эл. почты для пользователя
//Запрос = Новый Запрос;
//Запрос.Текст = 
// "ВЫБРАТЬ
// | УчетныеЗаписиЭлектроннойПочты.УчетнаяЗаписьЭлектроннойПочты
// |ИЗ
// | РегистрСведений.НастройкиУчетныхЗаписейЭлектроннойПочты КАК УчетныеЗаписиЭлектроннойПочты
// |ГДЕ
// | УчетныеЗаписиЭлектроннойПочты.ОтветственныйЗаОбработкуПисем = &Пользователь";
//Запрос.УстановитьПараметр("Пользователь", ЭлПисьмо.Ответственный);
//РезЗапроса = запрос.Выполнить();
//Выборка = РезЗапроса.Выбрать();
//Если Не Выборка.Следующий() Тогда
// Возврат;
//КонецЕсли;
//ЭлПисьмо.ОтправительПредставление = Выборка.УчетнаяЗапись;
//ЭлПисьмо.УчетнаяЗапись = Выборка.УчетнаяЗапись;

УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты;
ЭлПисьмо.ОтправительПредставление = УчетнаяЗапись;
ЭлПисьмо.УчетнаяЗапись = УчетнаяЗапись;
ЭлПисьмо.Записать(); 

ЗафиксироватьТранзакцию();
//| Файлы.Наименование КАК ПолноеНаименование,
//| Файлы.Расширение КАК Расширение,
//| Файлы.Ссылка КАК Ссылка,
//| Файлы.ЭлектронныеЦифровыеПодписи.(
//| НомерСтроки,
//| Подпись
//| ),
//| Файлы.ИДФайлаЭлектронногоПисьма
//|ИЗ
//| Справочник.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы КАК Файлы
//|ГДЕ
//| Файлы.ВладелецФайла = &ВладелецФайла";

// Формируем вложение 
Спр = Справочники.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.СоздатьЭлемент();
Спр.ВладелецФайла = ЭлПисьмо.Ссылка;
Спр.Наименование = НаименованиеФайла;
Спр.Расширение = "xls";

Данные = Новый ДвоичныеДанные(ИмяФайла);
Спр.ФайлХранилище = Новый ХранилищеЗначения(Данные);
Спр.Записать();

соотвВложения = Новый Соответствие; 
соотвВложения.Вставить(НаименованиеФайла+".xls", Данные); 

// Заполняем параметры письма и отправляем
ПараметрыПисьма = Новый Структура;
ПараметрыПисьма.Вставить("Тема", Тема);
ПараметрыПисьма.Вставить("Тело", НСтр("ru = 'Это сообщение отправлено подсистемой электронной почты 1С:Предприятие'"));
ПараметрыПисьма.Вставить("Кому", ПолучательАдрес);
ПараметрыПисьма.Вставить("Вложения", соотвВложения);

ИдентификаторПисьма = ЭлектроннаяПочта.ОтправитьПочтовоеСообщение(ЭлПисьмо.УчетнаяЗапись, ПараметрыПисьма);

Электронное письмо УТ 3.0 Отправка электронного письма Создание электронного письма Отправка письма

См. также

Взаиморасчеты Email рассылки Акт сверки Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Внешняя обработка для Бухгалтерии 3.0 - позволяет автоматически формировать документы «Акт сверки расчетов» с контрагентами за выбранный период с последующей фоновой отправкой на почту контрагента.

3000 руб.

25.11.2020    25522    267    8    

230

SALE! 50%

Мессенджеры и боты SMS рассылки Email рассылки Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Расширение 1С с полным набором инструментов для качественных транзакционных, триггерных и маркетинговых рассылок Email, SMS, WhatsApp, Telegram. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

4800 2400 руб.

07.04.2014    86260    52    195    

137

Email рассылки Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Решение для массовой рассылки печатных форм (в том числе и дополнительных) любых документов, и произвольных файлов. Рассылка возможна посредством электронной почты, Telegram и файловой системы. Рассылка пакета документов. Добавление факсимильных печати и подписи. Произвольные шаблоны HTML/Simple text с автозаполнением любыми полями документа. Любые форматы файлов. Упаковка вложений в архив. Транслитерация имен файлов. Разбиение рассылки на произвольные порции. Обход спам-фильтров. Журналирование рассылок.

4920 руб.

30.06.2022    11763    77    100    

39

Взаиморасчеты Email рассылки Акт сверки Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Создать и отправить 1000 Актов серки контрагентам за 5 мин ?! Легко! Разработано для конфигурации УНФ Массовое создание и рассылка Актов сверки в три клика.

6000 руб.

13.01.2022    11183    8    13    

14

Email рассылки Оптовая торговля Бизнес-аналитик Бухгалтер Пользователь Руководитель проекта Платформа 1С v8.3 1С:Управление торговлей 10 1С:Управление производственным предприятием Управленческий учет Платные (руб)

Многим сотрудникам предприятия требуется актуальная и достоверная информация для принятия верных управленческих решений. Получить данную информацию можно при помощи отчетов, существующих в конфигурации «1С: Управление торговлей 10.3» или «1С:УПП». Но не всегда у пользователей есть время, возможность и/или желание формировать отчеты непосредственно в системе. Намного привычней и удобней получать готовые отчеты на электронную почту, не открывая 1С.

12000 руб.

16.04.2014    85999    101    91    

96

Email рассылки Взаиморасчеты Акт сверки Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Данная обработка позволяет сократить объем ручных операций, выполняемых ежемесячно бухгалтером или его помощником за счет автоматизации систематического процесса.

7800 руб.

12.02.2019    33732    27    24    

26

Взаиморасчеты Email рассылки Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Обработка позволяет автоматически сформировать акты сверок на почту контрагентов (почта берется из контактных данных контрагента). При формировании акта сверки формируется подпись с указанием контактов для связи с бухгалтерией нашей организации (формируется исходя из контактов из карточки организации). Присутствует возможность ручного редактирования электронной почты контрагента для отправки. Отправка осуществляется с системной записи электронной почты. В случае, если у контрагента нет адреса электронной почты, эти контрагенты будут выведены в отдельной табличной части. Это очень удобно, так как сразу наглядно виден список контрагентов, которым невозможно отправить акты сверок!

7080 руб.

11.05.2021    10044    7    2    

7
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Hisoka1992 31.05.16 09:44 Сейчас в теме
Для добавления вложения нужно еще записать двоичный файл в регистр ПрисоединенныеФайлы

МенеджерЗаписи = РегистрыСведений.ПрисоединенныеФайлы.СоздатьМенеджерЗаписи();
МенеджерЗаписи.ПрисоединенныйФайл = Спр.Ссылка;
МенеджерЗаписи.ХранимыйФайл = Новый ХранилищеЗначения(ДвоичныеДанные);
МенеджерЗаписи.Записать();
6. tonimontana05 11.06.20 12:52 Сейчас в теме
Для УТ последних версий нужно добавить

МенеджерЗаписи = РегистрыСведений.ДвоичныеДанныеФайлов.СоздатьМенеджерЗаписи();
МенеджерЗаписи.Файл = Спр.Ссылка;
МенеджерЗаписи.ДвоичныеДанныеФайла = Новый ХранилищеЗначения(ДвоичныеДанные);
МенеджерЗаписи.Записать();


Или файлы не будут открываться в 1С
2. Bor_ka 101 31.05.16 13:12 Сейчас в теме
Спасибо за комментарий.
3. nbeliaev 836 08.09.16 19:48 Сейчас в теме
4. Albert1980 26.09.16 18:18 Сейчас в теме
Письмо с вложением приходит, всё в порядке, спасибо!)

Но почему же в 1с потом само вложение не удаётся открыть из документа "Электронное письмо исходящее"?
5. Степной 27 12.09.19 18:46 Сейчас в теме
Для прикрепления вложений, которые не хранятся в базе, использовал следующий код:

ПрисоединенныеФайлыОбъект			= Справочники.ЭлектронноеПисьмоИсходящееПрисоединенныеФайлы.СоздатьЭлемент();
ПрисоединенныеФайлыОбъект.ВладелецФайла	= ИсходящееПисьмоОбъект.Ссылка; // ДокументСсылка.ЭлектронноеПисьмоИсходящее 
ПрисоединенныеФайлыОбъект.ТипХраненияФайла	= Перечисления.ТипыХраненияФайлов.ВТомахНаДиске;
ПрисоединенныеФайлыОбъект.Том				= ОсновнойТомХранения; // СправочникСсылка.ТомаХраненияФайлов
ПрисоединенныеФайлыОбъект.Наименование		= "123";
ПрисоединенныеФайлыОбъект.Расширение		= "zip";
ПрисоединенныеФайлыОбъект.ПутьКФайлу		= ИмяКаталогаВТоме + "123/zip";


Табуляция при вставке кода почему-то отображается не корректно.
7. 7OH 70 07.04.21 09:47 Сейчас в теме
А в БСП разве нет метода, который сам создаст документ и отправит почту ?
Отправка уже работает через БСП - документ руками создавать хоть и не долго, но вот не охота.
8. Bor_ka 101 07.04.21 10:13 Сейчас в теме
Не пробовал.
Вопрос, какую из двух задач будет выполнить быстрее? Мне кажется, что это вариант проще и быстрее.
Ваш вариант - нужно знать БСП и уметь это дело встроить в конфигурацию.
Если поделитесь опытом, будет всем интересно, пишите, поставлю лайк обязательно!
9. Serg243 15.03.22 16:05 Сейчас в теме
Спасибо. Это приблизило меня к пониманию как решить мою задачу.
Оставьте свое сообщение