Если при рассылке закончилось место
С некоторого релиза, не могу сказать точно с какого, при проведении массовой рассылки писем с вложениями стало быстро заканчиваться место. Как я это обнаружил и что с этим сделал, напишу ниже. Очень приветствуются другие варианты решения в комментариях.
- Описание
- Подробнее
Описание
Что имелось:
- Клиент-серверный вариант 1С:Предприятие 8.3 (8.3.9.2033).
- «Управление торговлей», редакция 10.3 (10.3.40.1)
- Рабочая версия рассылки писем с вложениями,всего их 2 суммарным объемом ~1,5-2 мегабайта
Что случилось:
В один прекрасный момент на сервере полностью кончилось место. Анализ диска С привел к тому что в папке User\AppData\Temp повились файлы объем которых превышал 14G:

В отладке поймал момент возникновения этих «папочек»:
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.ИмяОтправителя = "";
Сообщение.Отправитель = УчетнаяЗаписьПочты.АдресЭлектроннойПочты;
Сообщение.Отправитель.ОтображаемоеИмя = "";
Сообщение.Кодировка = "windows-1251";
Сообщение.Вложения.Очистить();
мВременныеФайлы = Новый Массив;
Если НЕ Вложение = Неопределено Тогда
ФайлВФорматеXLS = ПолучитьИмяВременногоФайла();
мВременныеФайлы.Добавить(ФайлВФорматеXLS);
Вложение.Записать(ФайлВФорматеXLS, ТипФайлаТабличногоДокумента.XLSX);
Сообщение.Вложения.Добавить(ПолучитьДвоичныеДанные(ФайлВФорматеXLS), "Вложение.xlsx");
КонецЕсли;
Сообщение.Получатели.Очистить();
конкретно тут
Сообщение.Вложения.Добавить(ПолучитьДвоичныеДанные(ФайлВФорматеXLS), "Вложение.xlsx");И что самое интересно, за собой 1С это чистит только после выхода из программы 1С. Долго и безрезультатно искал с чем это связано и можно ли настроить очистку сразу или периодически…
Обратите внимание! Это НЕ временный файл непосредственно вложения. Более того я тоже первый раз подумал на эти файлы, хотя они по массе и не превышают 2 мегабайт и лежат в папке temp. Ниже скриншот сравнения файла вложения, который я делаю для отправки и папки созданной системой.

и ещё содержимое этой папки, я не силен в разметке и прочее, но мне кажется это части письма:
И ещё один скриншот, на котором хорошо видно, что созданный файл вложения имеет маленький размер и хранится отдельно, с возможностью легко удалить его. А «герой» статьи появляется отдельно, в момент когда созданное вложение помещается в письмо.

В итоге написал свою процедуру, которая примерно через равные промежутки времени удаляет эти каталоги.
Процедура ОчисткаКаталогаВременныхФайлов(дВремяНачала = Неопределено, сШаблон = "*.tmp") Экспорт
Если дВремяНачала = Неопределено Тогда
дВремяНачала = Дата(1,1,1)
КонецЕсли;
сКаталог = КаталогВременныхФайлов();
мСодержимое = НайтиФайлы(сКаталог, сШаблон);
Для Каждого элФайл Из мСодержимое Цикл
Если элФайл.ЭтоКаталог() Тогда
дВремяИзменения = элФайл.ПолучитьВремяИзменения();
Если дВремяИзменения >= дВремяНачала Тогда
УдалитьФайлы(элФайл.ПолноеИмя);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедурыНадеюсь, это кому-нибудь поможет сэкономить время и нервы =)
