Имя: Пароль:
1C
 
Как проверить существует каталог или нет?
0 rud99
 
22.12.08
07:27
требуется проверить существование каталога! Про существование файла все понятно, а вот проверку каталогов на существование......?
1 povar
 
22.12.08
07:30
есть разница ?
2 rud99
 
22.12.08
07:32
тоесть можно в качестве параметра при проверке на существование файла можно передать не имя файла а имя каталога?
3 Нуф-Нуф
 
22.12.08
07:33
(2) шансы есть, попробуй
4 skunk
 
22.12.08
07:35
фс.СуществуетФайл("c:\1") = 1
фс.СуществуетФайл("c:\12") = 0
5 vcv
 
22.12.08
10:48
Только еще атрибуты проверить надо. Вдруг это все же файл.
6 грязный
 
22.12.08
10:49
Если ФС.Существуетфайл(стрКаталогФайлов+"\NUL")=0 Тогда
       ФС.СоздатьКаталог(стрКаталогФайлов);
   КонецЕсли;
7 YF
 
22.12.08
10:49
//------- © YF --------------------
// Функция проверяет существует ли каталог или файл <_путь>
// В отличие от стандартного метода ФС, проверяет действительно ли
// это файл или каталог.
// Возвращает 1 или 0
// _путь - строка с путем к файлу/каталогу
// _чтоИщем: 0 - файл, 1 - каталог, 2 - все равно что, лишь бы было
Функция глСуществуетФайл(Знач _путь, Знач _чтоИщем = 0) Экспорт
   // Удалим слэш в конце, иначе криво отработает ФС.АтрибутыФайла()
   путь_ = СокрЛП(_путь);
   Если (Прав(путь_, 1) = "\") или (Прав(путь_, 1) = "/") Тогда
       путь_ = Лев(путь_, СтрДлина(путь_) - 1);
   КонецЕсли; //(Прав(путь_, 1) = "\") или (Прав(путь_, 1) = "/")
   // Теперь посмотрим наличие файла/каталога
   Если ФС.СуществуетФайл(путь_) = 0 Тогда
       возврат 0;
   ИначеЕсли _чтоИщем = 2 Тогда
       // Итак, мы уверены, что что-то есть, а раз не важно,
       // что именно, то и вернем единичку
       возврат 1;
   Иначе
       // Файл/каталог существует, теперь выясним, файл это или каталог
       атрибуты_="";
       ФС.АтрибутыФайла(путь_,"",атрибуты_);
       файлЛи_ = глНе(Число(Сред(атрибуты_,4,1)));
       Возврат ((файлЛи_+_чтоИщем) % 2);
   КонецЕсли; //ФС.СуществуетФайл(_каталог) = 0    
КонецФункции //глСуществуетКаталог
8 rud99
 
22.12.08
10:56
спасибо всем! решил проблему сл образом!
Функция СтроитьПуть()
   // путь до года вид (...\2008)
   ПутьДоГода=СокрП(Константа.ФайловоеХранилище)+ДатаГод(ДатаДок);
   // путь до номера вид (...\2008\22)
   ПутьДоНомера=ПутьДоГода+"\"+СокрЛ(НомерДок);
   // сначала проверяем есть ли каталог года
   Если ФС.СуществуетФайл(ПутьДоГода)=0 Тогда
       ФС.СоздатьКаталог(ПутьДоГода);
       Сообщить("Создан каталог:"+ПутьДоГода,"I");
   КонецЕсли;
   // проверяем есть ли папка с номером
   Если ФС.СуществуетФайл(ПутьДоНомера)=0 Тогда
       Сообщить("Создан каталог:"+ПутьДоНомера,"I");
       ФС.СоздатьКаталог(ПутьДоНомера);
   КонецЕсли;
   Возврат ПутьДоНомера;// ф-я возвращает значение полного пути до файлов
КонецФункции
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.