#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
#Область ДляВызоваИзДругихПодсистем
Процедура НастроитьВариантыОтчета(Настройки, НастройкиОтчета) Экспорт
МодульВариантыОтчетов = ОбщегоНазначения.ОбщийМодуль("ВариантыОтчетов");
МодульВариантыОтчетов.УстановитьРежимВыводаВПанеляхОтчетов(Настройки, НастройкиОтчета, Ложь);
НастройкиВарианта = МодульВариантыОтчетов.ОписаниеВарианта(Настройки, НастройкиОтчета, "ОбъемНенужныхФайловПоВладельцам");
НастройкиВарианта.Описание = НСтр("ru = 'Позволяет получить информацию об объеме данных, занятых ненужными файлами.'");
КонецПроцедуры
Процедура ПриОпределенииОбъектовСКомандамиОтчетов(Объекты) Экспорт
Объекты.Добавить(Метаданные.РегистрыСведений.НастройкиОчисткиФайлов);
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ТаблицаНенужныхФайлов() Экспорт
НастройкиОчистки = РегистрыСведений.НастройкиОчисткиФайлов.ТекущиеНастройкиОчистки();
ТаблицаНенужныхФайлов = Новый ТаблицаЗначений;
ТаблицаНенужныхФайлов.Колонки.Добавить("ВладелецФайла");
ТаблицаНенужныхФайлов.Колонки.Добавить("ОбъемНенужныхФайлов", Новый ОписаниеТипов("Число"));
НастройкиОчисткиФайлов = НастройкиОчистки.НайтиСтроки(Новый Структура("ЭтоНастройкаДляЭлементаСправочника", Ложь));
Для Каждого Настройка Из НастройкиОчисткиФайлов Цикл
МассивИсключений = Новый Массив;
ДетализированныеНастройки = НастройкиОчистки.НайтиСтроки(Новый Структура(
"ИдентификаторВладельца, ЭтоНастройкаДляЭлементаСправочника",
Настройка.ВладелецФайла,
Истина));
Если ДетализированныеНастройки.Количество() > 0 Тогда
Для Каждого ЭлементИсключение Из ДетализированныеНастройки Цикл
МассивИсключений.Добавить(ЭлементИсключение.ВладелецФайла);
ДополнитьТаблицуНенужныхФайлов(ТаблицаНенужныхФайлов, ЭлементИсключение, МассивИсключений);
КонецЦикла;
КонецЕсли;
ДополнитьТаблицуНенужныхФайлов(ТаблицаНенужныхФайлов, Настройка, МассивИсключений);
КонецЦикла;
Возврат ТаблицаНенужныхФайлов;
КонецФункции
Процедура ДополнитьТаблицуНенужныхФайлов(ТаблицаНенужныхФайлов, НастройкаОчистки, МассивИсключений)
Если НастройкаОчистки.Действие = Перечисления.ВариантыОчисткиФайлов.НеОчищать Тогда
Возврат;
КонецЕсли;
Если МассивИсключений = Неопределено Тогда
МассивИсключений = Новый Массив;
КонецЕсли;
НенужныеФайлы = РаботаСФайламиСлужебный.ВыбратьНенужныеФайлы(НастройкаОчистки, МассивИсключений);
Для Каждого НенужныйФайл Из НенужныеФайлы.Строки Цикл
НоваяСтрока = ТаблицаНенужныхФайлов.Добавить();
НоваяСтрока.ВладелецФайла = НенужныйФайл.ВладелецФайла;
НоваяСтрока.ОбъемНенужныхФайлов = ?(НенужныйФайл.Строки.Количество() > 0, 0, НенужныйФайл.Размер);
Для Каждого НенужнаяВерсияФайла Из НенужныйФайл.Строки Цикл
НоваяСтрока.ОбъемНенужныхФайлов = НоваяСтрока.ОбъемНенужныхФайлов + НенужнаяВерсияФайла.Размер;
КонецЦикла
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#КонецЕсли