|
Некорректная привязка файла | ☑ | ||
---|---|---|---|---|
0
prilforreal
05.09.17
✎
14:24
|
Доброго всем времени суток, настроил рассылку отчета, отправляется всем контрагентам, но иногда процедура путает файлы и отправляет контрагенту письмо с файлом предназначенным другому человеку, будьте добры, помогите разобраться в чем дело.
Если ТипЗнч(ТаблицаОтправки)=Тип("ТабличныйДокумент") или ТипЗнч(ТаблицаОтправки)=Тип("ПолеТабличногоДокумента") тогда // ИмяФайла=КаталогПользователя()+"Отчет"+СтрЗаменить(СокрЛП(ТекущаяДата()),".","")+"_"+СтрЗаменить(СокрЛП(ТекущееВремя()),":","")+".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); Исключение Сообщить(Получатель.ЭлПочта); Сообщить(ОписаниеОшибки()); КонецПопытки; Почта.Отключиться(); |
|||
1
Fedor-1971
05.09.17
✎
14:33
|
(0) проблема тут "Получатель.ЭлПочта" у тебя отсылается один или несколько файлов получателю, в приведённом куске кода определения "Собственно кому отправим письмо" нет. Значит проверяй мэйлы в справочнике на предмет "зарегистрирован мэйл не того получателя"
|
|||
2
prilforreal
05.09.17
✎
14:52
|
(1) Почтовые ящики в справочнике проверял в первую очередь, они соответствуют ящикам получателей, потому и решил что не те файлы пришиваются
|
|||
3
Fedor-1971
05.09.17
✎
14:59
|
(2) и какой алгоритм определения Что и Кому отправить? в коде этого то же нет - просто некие файлы привязываются к сообщению
|
|||
4
prilforreal
05.09.17
✎
15:43
|
(3) Получатель определяется при формировании отчета
Перем Запрос, ТекстЗапроса; Запрос=Новый Запрос; Запрос.Текст="ВЫБРАТЬ | РасчетыОстатки.Контрагент, | РасчетыОстатки.Контрагент.ЭлПочта, | СУММА(РасчетыОстатки.БалансОстаток) КАК БалансКонОст |ИЗ | РегистрНакопления.Расчеты.Остатки( | &НаДату, | Контрагент.ЭлПочта <> """" | И Контрагент.Наименование <> """") КАК РасчетыОстатки | |СГРУППИРОВАТЬ ПО | РасчетыОстатки.Контрагент, | РасчетыОстатки.Контрагент.ЭлПочта"; Запрос.УстановитьПараметр("НаДату",ТекущаяДата()); Рез=Запрос.Выполнить().Выбрать(); ВыбНачПериода=ДобавитьМесяц(ТекущаяДата(),-1); ВыбКонПериода=ТекущаяДата(); Пока Рез.Следующий() Цикл // // Заполнение полей Контрагент // если не((Пустоезначение(Запрос.БалансПриход)=1)и(Пустоезначение(Запрос.БалансРасход)=1)) тогда ВыбДилер=Рез.Контрагент; ТемаОтправки="Взаморасчеты по дилеру "+СокрЛП(ВыбДилер.Наименование)+" за период "+ПредставлениеПериода(ВыбНачПериода,ВыбКонПериода,"L=ru_RU")+". "; если Рез.БалансКонОст<0 тогда ТемаОтправки=ТемаОтправки+"Ваш долг "+Рез.БалансКонОст+ " руб."; иначе ТемаОтправки=ТемаОтправки+"Ваш баланс "+Рез.БалансКонОст+ " руб."; конецесли; Сформировать(0); глОтправитьОтчетПоПочте(Таб,ВыбДилер,ТемаОтправки,0,"file:G:\Bases2\Balance.htm",2); Сообщить(ТемаОтправки); |
|||
5
dezss
05.09.17
✎
15:54
|
А у тебя всегда файл для отправки формируется, нет ли ничего такого в Сформировать(0), когда файл просто не формируется и поэтому отправляется тот, который был сформирован ранее?
|
|||
6
Fedor-1971
05.09.17
✎
15:58
|
(3) Вот тут добавь удаление файла
глОтправитьОтчетПоПочте(Таб,ВыбДилер,ТемаОтправки,0,"file:G:\Bases2\Balance.htm",2); .... Удаляем сформированный файл .... Сообщить(ТемаОтправки); Или Сформировать(0) сделай функцией с возвратом Истина если файл таки сформирован |
|||
7
prilforreal
05.09.17
✎
16:08
|
(5) Проверял, файлы формируются корректно, без сбоев.
|
|||
8
dezss
05.09.17
✎
16:10
|
(7) Сделай все таки как в (6) тебе написали. И в лог еще пиши о том, сформировался ли файл и что-нибудь из его содержимого.
|
|||
9
prilforreal
05.09.17
✎
16:37
|
(6) Подскажите будьте добры, как файл удалить
|
|||
10
dezss
05.09.17
✎
16:42
|
(9) УдалитьФайлы(<Путь>, <Маска>)
|
|||
11
prilforreal
05.09.17
✎
17:02
|
(10) пошел процесс, контрагентов много, отправка длится долго, завтра расскажу как прошло, спасибо!
|
|||
12
prilforreal
06.09.17
✎
11:59
|
(10) Все здорово, рассылает все туда, куда и следует, спасибо!)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |