Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
19 апр 2025, 05:15

Почему дублируется рассылка?

Автор Prilforreal, 09 окт 2017, 16:11

0 Пользователей и 1 гость просматривают эту тему.

Prilforreal

Доброго дня! Настроил рассылку отчетов, не могу разобраться почему письма дублируются, нашел лишь процедуру, в которой заключается проблема, помогите найти ошибку..

Процедура глОтправитьОтчетПоПочте(ТаблицаОтправки,Получатель,ТемаПисьма,Сообщения=1,ТелоПисьма="",ТипПисьма=0) Экспорт   
//   
//   если ТипЗначенияСтр(ТаблицаОтправки)="Таблица" Тогда
   Если ТипЗнч(ТаблицаОтправки)=Тип("ТабличныйДокумент") или ТипЗнч(ТаблицаОтправки)=Тип("ПолеТабличногоДокумента") тогда
//      ИмяФайла=КаталогПользователя()+"Отчет"+СтрЗаменить(СокрЛП(ТекущаяДата()),".","")+"_"+СтрЗаменить(СокрЛП(ТекущееВремя()),":","")+".xls";
      ИмяФайла=КаталогВременныхФайлов()+"Отчет"+Формат(ТекущаяДата(),"ДФ=""ддммгггг'_'ЧЧммсс""")+".xls";
//      ТаблицаОтправки.Записать(ИмяФайла,1);
      ТаблицаОтправки.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.XLS);
   //иначеесли ТипЗначенияСтр(ТаблицаОтправки)="Строка" тогда
   ИначеЕсли ТипЗнч(ТаблицаОтправки)=Тип("Строка") тогда
//      поз=Найти(ТаблицаОтправки,";");
      поз=СтрНайти(ТаблицаОтправки,";");
      ИмяФайла=Новый Массив;//"";
      
      пока поз<>0 цикл
         тестфайла=Лев(ТаблицаОтправки,поз-1);
         фс=Новый Файл(тестфайла);
//         если фс.СуществуетФайл(тестфайла)=1 тогда
         Если фс.Существует() тогда
         //   если Пустоезначение(ИмяФайла)=0 тогда
         //      ИмяФайла=ИмяФайла+";";   
         //   конецесли;
         //   ИмяФайла=ИмяФайла+тестфайла;
            ИмяФайла.Добавить(фс);
         конецесли;
         ТаблицаОтправки=Сред(ТаблицаОтправки,поз+1);
         поз=Найти(ТаблицаОтправки,";");
      конеццикла;
//
      фс=Новый Файл(ТаблицаОтправки);
//      если фс.СуществуетФайл(ТаблицаОтправки)=1 тогда
      Если фс.Существует() тогда
         //если Пустоезначение(ИмяФайла)=0 тогда
         //   ИмяФайла=ИмяФайла+";";   
         //конецесли;
         //ИмяФайла=ИмяФайла+ТаблицаОтправки;
         ИмяФайла.Добавить(фс);
      конецесли;
   иначе
      ИмяФайла="";   
   конецесли;
//   
   АдресЭл=Константы.ЭлПочта.Получить();
   Профиль=Новый ИнтернетПочтовыйПрофиль;
   Профиль.АдресСервераSMTP=АдресЭл.Сервер;
   Профиль.АдресСервераPOP3=АдресЭл.Сервер;
   Профиль.Таймаут=60;
   Профиль.ПортSMTP=?(НЕ ЗначениеЗаполнено(АдресЭл.Порт),"25",Строка(АдресЭл.Порт));
   Профиль.ПортPOP3=110;
   Профиль.ПользовательSMTP=АдресЭл.Логин;
   Профиль.ПарольSMTP=АдресЭл.Пароль;
   Профиль.Пользователь=АдресЭл.Логин;
   Профиль.Пароль=АдресЭл.Пароль;
   Профиль.АутентификацияSMTP=СпособSMTPАутентификации.Login;
   Сообщение=Новый ИнтернетПочтовоеСообщение;
   Сообщение.Отправитель=АдресЭл.АдресОтправителя;
   Сообщение.ИмяОтправителя=АдресЭл.Отправитель;
   Сообщение.Получатели.Добавить(СокрЛП(Получатель.ЭлПочта));
   Сообщение.Тема=ТемаПисьма;
   Если НЕ ЗначениеЗаполнено(ТелоПисьма) тогда
      Сообщение.Тексты.Добавить(ТемаПисьма,ТипТекстаПочтовогоСообщения.ПростойТекст);
   ИначеЕсли лев(ТелоПисьма,5)="file:" тогда
   //   ВК.ЗагрузитьИзФайла(СокрЛП(сред(ТелоПисьма,6)));
      ТекстСообщения="";
       ФайлТекстаСообщения=Новый ТекстовыйДокумент;
      ФайлТекстаСообщения.Прочитать(СокрЛП(сред(ТелоПисьма,6)));
      ТекстСообщения=ФайлТекстаСообщения.ПолучитьТекст();
      Сообщение.Тексты.Добавить(ТекстСообщения,ТипТекстаПочтовогоСообщения.HTML);
      
   Иначе
      Сообщение.Тексты.Добавить(ТелоПисьма,ТипТекстаПочтовогоСообщения.ПростойТекст);
   КонецЕсли;
   Если ТипЗНЧ(ИмяФайла)=Тип("Строка") и ЗначениеЗаполнено(ИмяФайла) тогда
      ФайлСообщения=Новый Файл(ИмяФайла);
      Сообщение.Вложения.Добавить(ИмяФайла,ФайлСообщения.Имя);
   ИначеЕсли ТипЗнч(ИмяФайла)=Тип("Массив") тогда
      Для каждого МЗнач из ИмяФайла Цикл
         Сообщение.Вложения.Добавить(ИмяФайла.ПолноеИмя,ИмяФайла.Имя);
      КонецЦикла;   
   КонецЕсли;   
   Почта=Новый ИнтернетПочта;
   Попытка
      Почта.Подключиться(Профиль);
   Исключение
      Сообщить("Ошибка отправки файла: "+ИмяФайла);
      Сообщить(ОписаниеОшибки());
      Возврат;
   КонецПопытки;
   Попытка
      Почта.Послать(Сообщение,ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать,ПротоколИнтернетПочты.SMTP);
      СообщенияОтправки=Почта.Послать(Сообщение,ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать,ПротоколИнтернетПочты.SMTP);
   Исключение
      Сообщить(Получатель.ЭлПочта);
      Сообщить(ОписаниеОшибки());
   КонецПопытки;
   УдалитьФайлы("file:G:\Bases2\Balance.htm");
   Сообщить(ТемаПисьма);
   Почта.Отключиться();


КонецПроцедуры

Golickoff

Цитата: Prilforreal от 09 окт 2017, 16:11
      Почта.Послать(Сообщение,ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать,ПротоколИнтернетПочты.SMTP);
      СообщенияОтправки=Почта.Послать(Сообщение,ОбработкаТекстаИнтернетПочтовогоСообщения.НеОбрабатывать,ПротоколИнтернетПочты.SMTP);
Вторую строку закомментируйте. Или первую.
Правило поведения на форуме №6: Не следует пытаться привлечь внимание к своему сообщению ... рассылкой персональных сообщений и/или электронных писем отдельным участникам форума с просьбой ответить в теме.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск