|   |   | 
| 
 | Некорректная привязка файла | ☑ | ||
|---|---|---|---|---|
| 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) Все здорово, рассылает все туда, куда и следует, спасибо!)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |