Отправка по почте файлов из регламентного задания. Чудеса.. #673121


#0 by mr_K
Есть задача, отправлять клиентам отгрузочные документы за день. Регламентное задание вечером запускает процедуру, которая формирует Торг12 и счет-фактуру, записывает их в КаталогВременныхФайлов и затем прикрепляет к письму, как вложения. Первый проход (первый отгрузочный документ)- все работает. Перед вторым проходом нужно удалить созданные ранее файлы и на их месте создать новые. Вот с этим беда: файлы оказываются залочены процессом rphost. Причем залочены они до конца жизни фонового задания на сервере. Как побороть? зы есть аналогичное регламентное задание по отправке формируемых динамически файлов. Написано 2 года назад. Работает зараза, ничего не лочится. Хотя код идентичен процентов на 99% (формирования и запись файлов).
#1 by shuhard
а не о чем без кода разговаривать
#2 by mr_K
Согласен. Код ниже:    ... далее не интересно КонецЦикла
#3 by mr_K
+ Первый проход по циклу проходит. Письмо уходит, файл прикреплен. Второй проход вываливается на УдалитьФайлы. Если делать УдалитьФайлы в Попытка..Исключение - вываливается на ТабДокумент.Записать. Если УдалитьФайлы делать в таком цикле: - то будет выполняться бесконечно и как раз тут и видно чем залочен файл. Когда через консоль сервера срубаешь фоновое задание - файл сразу освобождается
#4 by zzerro
Есть такая же беда... Регламентом формируются письма с вложением, отправляются. После отправки временные файлы не удаляются, ошибка доступа к файлу...
#5 by Галахад
Насчет ошибки не знаю, а вообще я бы так сделал. Для каждого файла - уникальное имя. Допустим Номер+Дата+torg12.pdf.
#6 by mr_K
Это на крайний случай ) Не люблю за собой горы мусора оставлять
#7 by hhhh
СформироватьФайл у тебя раньше выполняется, чем УдалитьФайлы. поставь wait секунд на 5, чтобы все файлы успели удалиться.
#8 by mr_K
Я же написал в , что если постоянно долбится, пытаясь удалить файл, то не происходит удаление, ни через 5 секунд, ни через 5 минут. Файл освобождается, только когда убивается процесс, который его создал.
#9 by alexei366
Попрбуй затести другой каталог, там на диске D к примеру, будет ли он также ся вести, также затести можешь ли сам ручками удалить файл с сервера когда фоновое ещё работает, но не производит с этим файлом ничего.
#10 by Галахад
А если файлы не отправлять? Просто создать и удалить. Это прокатит?
#11 by ildary
Понятно, что велосипед, с квадратными колесами, но: что если при создании временных файлов - их создавать во временной папке вида ГГ-ММ-ДД_ЧЧ-ММ-СС, которая при запуске создаются и затем при следующем запуске удаляется.
#12 by defini
я сделал так: Правда процедуру запускает пользователь, не регламентно.
#13 by alexei366
У меня рег задании тож сохраненный файл переводиться в ДвоичныеДанные и сразу удаляется, и в письмо соответственно пихается ДвоичныеДанные.
#14 by defini
я не удаляю файл, он сам удалится, при последующем запуске: Синтаксис: ПолучитьИмяВременногоФайла(<Расширение>) Параметры: Тип: Строка. Указывает желаемое расширение имени временного файла. Если параметр не задан, то создается временный файл с расширением по умолчанию (.tmp). Желаемое расширение задается строкой, которая и будет использована в качестве расширения. Указание точки в начале расширения не обязательно. Например, при указании ".xml" или "xml" результат будет одинаковый. Возвращаемое значение: Тип: Строка. Описание: Для записи данных во временный файл необходимо сначала сформировать имя такого файла. При этом, во избежание случайных потерь имеющихся файлов требуется получить уникальное имя. Данный метод предназначен для получения такого имени. При выполнении метода файл не создается. Удаление временных файлов не обязательно. Если этот файл, по каким либо причинам, не был удален, программа удалит его при следующем запуске. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение. Примечание: Рекомендуется удалять временный файл самостоятельно после его использования.
#15 by lEvGl
файл блокируется не ТабДок.Записать а вот там где "... далее не интересно", где ПочтовыйПрофиль и все остальное. ИнтеренетПочту закрывать надо
#16 by тшл
в УТ в обработке ВыгрузкаДанныхCommerceML все по полочкам разложено. можно там посмотреть.
#17 by Infsams654
- не, пудрит что-то. Изначально неправильно сделано
#18 by mr_K
Там где не интересно, следующее: КонецПопытки; Если бы нужно за раз было послать только один файл - разговора бы не было. А тут либо на удалении блокируется, либо на записи следующего Конкретно, что не правильно? - Сейчас так и попробую, только на вскидку разницы не вижу )
#19 by lEvGl
гм.... ну тогда Письмо.Вложения.Удалить;
#20 by defini
попробуй через ПолучитьИмяВременногоФайла метод каждый раз возвращает уникальное имя файла.
#21 by alexei366
Попробуй как я и ещё некоторые писали, после создания файла перенеси его в ДвоичныеДанные и сразу удаляй, а к вложением вот это примени Вариант синтаксиса: Добавить двоичные данные Синтаксис: Добавить(<ДвоичныеДанные>, <НаименованиеВложения>)
#22 by alexei366
Или если у тя цикл, то мож Письмо = Неопределенно в конце каждого цикла
#23 by lEvGl
ага, или письмо прибить
#24 by mr_K
Заработало ) Спасибо! Но все равно: ..ничего не понимаю (с)
#25 by 1Сергей
не предлагали ещё?
#26 by mr_K
Я даже в разные процедуры разнес запись файла и его удление ). НЕ помогало. Через двоичные данные - работает. Всем спасибо! Но 1С не перестает удивлять своей чудесатостью )
#27 by arsik
Может все же  ТабДокумент = Неопределенно;
#28 by GANR
Отладить ФЗ знаешь как ?
#29 by mr_K
Да. Спасибо ). Эту ветку давно в избранное добавил
#30 by alexei366
твои файлы блокировало ИнтернетПочтовоеСообщение, так как ты в него прикреплял пути а не двоичные данные, тоесть если прикреплять пути то после отправки надо обнулять переменную содержащую ИнтернетПочтовоеСообщение (возможно будет так работать)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С