Не получается удалить каталог на диске из 1С.
pakitos2008
24.04.2009 - 09:39
|
Есть необходимость удалить определенный каталог со всеми файлами, находящимися в нем. Этот каталог находится в каталоге базы, в которой происходит работа и попытка удаления (это ни ExtForms, ни Syslog, ни New_Stru и т.д.). Проблема в том, что я могу удалить только файлы, которые находятся в этом каталоге. Сам каталог не хочет удаляться. Сначала я код писал сам, потом взял готовый из конфигурации Деньги (его отличие от моего, то что он очищает рекурсивно - все каталоги и файлы в удаляемой папке). Но ни мой код, ни код из Денег, так и не удаляют сам каталог, а все что внутри прекрсано удаляют. Вот последний код (из Денег) //***************************************************************************** Процедура СнятьАтрибут(ПолныйПуть) Попытка КомандаСистемы("attrib -R "+ПолныйПуть); Исключение КонецПопытки; КонецПроцедуры // СнятьАтрибут //***************************************************************************** // ОчиститьКаталог(Каталог) // // Параметры: Каталог - наименование очищаемого каталога // // Описание: Рекурсивная процедура. Осуществляет полную очистку указанного каталога Процедура ОчиститьКаталог(Каталог) Перем Размер,Атр,ВС,ВД,ВЗ,Расш; Перем СписокФайлов, СписокКаталогов; СписокФайлов = СоздатьОбъект("СписокЗначений"); СписокКаталогов = СоздатьОбъект("СписокЗначений"); // получим имя первого файла ФГ=СоздатьОбъект("ФС"); Файл = ФГ.НайтиПервыйФайл(Каталог + "\*.*"); Пока ПустаяСтрока(Файл) = 0 Цикл Если (Файл <> "..") И (Файл <> ".") Тогда ПолноеИмя = Каталог + "\" + Файл; ФГ.АтрибутыФайла(ПолноеИмя, Размер, Атр, ВС, ВД, ВЗ, Расш); Если Сред(Атр, 4, 1) = "1" Тогда СписокКаталогов.ДобавитьЗначение(ПолноеИмя); Иначе СписокФайлов.ДобавитьЗначение(ПолноеИмя); КонецЕсли; КонецЕсли; Файл = ФГ.НайтиСледующийФайл(); КонецЦикла; // очистить текущий каталог Для Индекс = 1 По СписокФайлов.РазмерСписка() Цикл Имя = СписокФайлов.ПолучитьЗначение(Индекс); ФГ.АтрибутыФайла(Имя, Размер, Атр, ВС, ВД, ВЗ, Расш); Если Лев(Атр,1)="1" Тогда СнятьАтрибут(Имя); КонецЕсли; ФС.УдалитьФайл(Имя); КонецЦикла; // если есть еще каталоги, то надо их очистить Для Индекс = 1 По СписокКаталогов.РазмерСписка() Цикл Имя = СписокКаталогов.ПолучитьЗначение(Индекс); ОчиститьКаталог(Имя); ФС.УдалитьКаталог(Имя + "\"); КонецЦикла; Имя=Каталог; ФС.УдалитьКаталог(Имя + "\"); КонецПроцедуры // ОчиститьКаталог Как же мне удалить этот каталог? Имя=Каталог; ФС.УдалитьКаталог(Имя + "\"); |