#Использовать fs #Использовать progbar Процедура ВыполнитьСортировку(Знач ИсходныйПуть) ПрогрессБар = Новый ПрогрессБар(); ВсеФайлы = НайтиФайлы(ИсходныйПуть, ПолучитьМаскуВсеФайлы(), Ложь); Таблица = Новый ТаблицаЗначений(); Таблица.Колонки.Добавить("Ключ", Новый ОписаниеТипов("Дата")); Таблица.Колонки.Добавить("Год"); Таблица.Колонки.Добавить("ГодМесяц"); Таблица.Колонки.Добавить("Файл"); Сообщить("Сортирую файлы"); ШагиПрогресса = Новый Соответствие(); Для Каждого Файл Из ВсеФайлы Цикл ДатаФайла = Файл.ПолучитьВремяИзменения(); СтрФайл = Таблица.Добавить(); СтрФайл.Год = Формат(ДатаФайла, "ДФ='гггг'"); СтрФайл.ГодМесяц = Формат(ДатаФайла, "ДФ='MMММ гггг'"); СтрФайл.Ключ = НачалоМесяца(ДатаФайла); СтрФайл.Файл = Файл; ШагиПрогресса.Вставить(СтрФайл.ГодМесяц); КонецЦикла; Таблица.Сортировать("Ключ"); ПрогрессБар.Начать(ШагиПрогресса.Количество()); Попытка ТекущийКлюч = Неопределено; Для Каждого СтрФайл Из Таблица Цикл Если СтрФайл.Ключ <> ТекущийКлюч Тогда ПрогрессБар.СделатьШаг(,, СтрФайл.ГодМесяц); ТекущийКлюч = СтрФайл.Ключ; КонецЕсли; ЦелевойКаталог = ОбъединитьПути(ИсходныйПуть, СтрФайл.Год, СтрФайл.ГодМесяц); ФС.ОбеспечитьКаталог(ЦелевойКаталог); ПереместитьФайл(СтрФайл.Файл.ПолноеИмя, ОбъединитьПути(ЦелевойКаталог, СтрФайл.Файл.Имя)); КонецЦикла; Исключение ПрогрессБар.Завершить(); ВызватьИсключение; КонецПопытки; ПрогрессБар.Завершить(); КонецПроцедуры Если Не АргументыКоманднойСтроки.Количество() Тогда Сообщить("Нужно указать путь к сортируемой папке"); ЗавершитьРаботу(1); КонецЕсли; ВыполнитьСортировку(АргументыКоманднойСтроки[0]); Сообщить("Обработка завершена");