В процессе организации массовой рассылки расчетных листов сотрудникам возникла систематическая проблема: часть корреспонденции не достигала адресатов. Для диагностики и устранения неполадок был разработан комплексный подход.
Отправляет PDF, берет из макета. Макет на картинке.
Поле "Емаил" - обязательно, оттуда берет адрес получателя. Или исправьте сами.
Как использовать.
1) Надо создать список, который состоит из двух столбцов "Сотрудник" и "Емаил"
в столбце "Сотрудник" - ФИО
в столбце "Емаил" - адрес электронной почты
Для примера
Сотрудник | Емаил |
Иванов | pochta@pochta.biz |
2) через буфер обмена вставить в табличную часть обработки
3) выбрать учетную запись, учетными данными которой будет отправляться рассылка.
4) нажать кнопку "отправить"
Код
&НаСервере
Функция ПечатьАктаСверки( )
УстановитьПривилегированныйРежим(Истина);
ТабличныйДокумент = Новый ТабличныйДокумент;
ТабличныйДокумент.АвтоМасштаб = Истина;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабличныйДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АктСверкиВзаиморасчетов";
Макет = РеквизитФормыВЗначение("Объект").ПолучитьМакет("ПФ_MXL_АктСверки");
ОбластьЗаголовок = Макет.ПолучитьОбласть("ОбластьЗаголовок");
ТабличныйДокумент.Вывести(ОбластьЗаголовок );
возврат ТабличныйДокумент;
КонецФункции
&НаСервере
Процедура ОтправитьНаСервере()
КонецПроцедуры
&НаКлиенте
Процедура Отправить(Команда)
//ОтправитьНаСервере();
РаспечатанныйДокументАктСверкиВзаиморасчетов = ПечатьАктаСверки( );
КаталогВыгрузки = КаталогВременныхФайлов()+"\тест.pdf";
РаспечатанныйДокументАктСверкиВзаиморасчетов.Записать(КаталогВыгрузки,ТипФайлаТабличногоДокумента.PDF);
ОтправитьПисьмо(КаталогВыгрузки);
КонецПроцедуры
&НаСервере
Процедура ОтправитьПисьмо(ИмяФайла )
ИмяОбласти = "R" + формат(1,"ЧН=; ЧГ=") + "C1:R" + Формат(ТЧДок.ВысотаТаблицы, "ЧН=;ЧГ=") + "C" + формат(ТЧДок.ШиринаСтраницы, "ЧН=;ЧГ=");
Область= ТЧДок.Область(ИмяОбласти);
ПЗ = новый ПостроительЗапроса;
ПЗ.ИсточникДанных= новый ОписаниеИсточникаДанных(Область);
Пз.ДобавлениеПредставлений = ТипДобавленияПредставлений.НеДобавлять;
ПЗ.ЗаполнитьНастройки();
Пз.Выполнить();
ТЗДок = ПЗ.Результат.Выгрузить();
Для Каждого стр из ТЗДок цикл
// Если стр.Отправить тогда
АдресПолучателя = стр.Емаил;
Файл = Новый Файл(ИмяФайла);
СоответствиеВложений = Новый Соответствие;
СоответствиеВложений.Вставить(Файл.Имя, Новый ДвоичныеДанные(ИмяФайла));
ПараметрыОтправки = Новый Структура();
ПараметрыОтправки.Вставить("Кому", АдресПолучателя);
ПараметрыОтправки.Вставить("Тема", "Тестовое сообщение");
ПараметрыОтправки.Вставить("Тело", "Тестовое сообщение");
//СведенияОбОрганизации = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Организация, ТекущаяДата());
ПараметрыОтправки.Тело = СтрЗаменить(ПараметрыОтправки.Тело, "#почта#", УчетнаяЗапись.ПользовательSMTP);
ПараметрыОтправки.Вставить("Вложения", СоответствиеВложений);
ответ = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, ПараметрыОтправки);
сообщить(ответ);
// конецесли;
конеццикла
КонецПроцедуры
Проверено на следующих конфигурациях и релизах:
- Зарплата и управление персоналом, редакция 3.1, релизы 3.1.33.19
Вступайте в нашу телеграмм-группу Инфостарт