Что имелось:
- Клиент-серверный вариант 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)
КонецЕсли;
сКаталог = КаталогВременныхФайлов();
мСодержимое = НайтиФайлы(сКаталог, сШаблон);
Для Каждого элФайл Из мСодержимое Цикл
Если элФайл.ЭтоКаталог() Тогда
дВремяИзменения = элФайл.ПолучитьВремяИзменения();
Если дВремяИзменения >= дВремяНачала Тогда
УдалитьФайлы(элФайл.ПолноеИмя);
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
Надеюсь, это кому-нибудь поможет сэкономить время и нервы =)