Имя: Пароль:
1C
1C 7.7
v7: Как получить список папок
, ,
0 DrRaptor
 
09.01.13
17:09
Нужно получить список папок из каталога.
Сообщить(ФС.НайтиПервыйФайл(КаталогХранения));
Сообщить(ФС.НайтиПервыйФайл(КаталогХранения+"*"));
Сообщить(ФС.НайтиПервыйФайл(КаталогХранения+"*.*"));
не работают.
Файлы находит, а папки нет.
как нужно прописать, чтобы папки поймать?
1 Ёпрст
 
09.01.13
17:12
2 zladenuw
 
09.01.13
17:12
(1) буду знать. спасибо
3 DrRaptor
 
09.01.13
17:17
а попроще то нельзя?
4 Ёпрст
 
09.01.13
17:20
можно, пробуй
5 Ёпрст
 
09.01.13
17:20
тупо рекурсией, например
6 Boroda
 
09.01.13
17:24
ФайлОписания = ФС.НайтиПервыйФайл(Папка+"\*.*");
Пока ПустаяСтрока(ФайлОписания)=0 Цикл
 фс.АтрибутыФайла(Папка+"\"+ФайлОписания,,атр,времясоздания,,,);
   Если сред(атр,4,1)="1" Тогда  // вот это папка
...
7 DrRaptor
 
09.01.13
17:50
Работает, если вот так:

атр="";
   ФайлОписания = ФС.НайтиПервыйФайл(КаталогХранения+"*-*");
   Пока ПустаяСтрока(ФайлОписания)=0 Цикл
         фс.АтрибутыФайла(КаталогХранения+ФайлОписания,,атр,,,,);
       Если сред(атр,4,1)="1" Тогда  // вот это папка
           Сообщить(СокрЛП(ФайлОписания));
           Прервать;
       КонецЕсли;
       ФайлОписания = ФС.НайтиСледующийФайл();
   КонецЦикла;
8 DrRaptor
 
09.01.13
17:51
*.* - она не понимает
обязательно нужен какой-то символ из названия папки
9 Ёпрст
 
09.01.13
17:52
КаталогХранения+"\*.*"
10 Ёпрст
 
09.01.13
17:53
можно и так
КаталогХранения+"\.."
не помню ужо, давно с ФС ничего не писал
11 DrRaptor
 
09.01.13
18:01
неа, с точками вообще не катит
а следжик у меня и так уже в КаталогХранения входит
12 Ёпрст
 
09.01.13
18:02
ну тогда усттекаталог сделай перед этим и ищи без указания каталога
13 Vladal
 
09.01.13
20:03
Я как-то задавался подобной задачей. Решил скриптами.
14 monsterZE
 
09.01.13
21:33
а чего не работает то??
писал себе разнесенку по отчетам для юзверей
типа внешние отчеты по группам
группы папки - отчеты - файлы в них
все работает..
подставил сейчас *.* в фильтр - добавились все каталоги
15 monsterZE
 
09.01.13
21:36
Процедура ОбновитьКаталоги(Путь);
   //Форма.Закладки.УдалитьВсе();
   
   //ИмяФайла = ФС.НайтиПервыйФайл(Путь+"*.ert");
   ИмяФайла = ФС.НайтиПервыйФайл(Путь+"*.*");
   
   Пока ИмяФайла <> "" Цикл
       АтрибутыФайла = ПолучитьПустоеЗначение();
       ФС.АтрибутыФайла(Путь+ИмяФайла,,АтрибутыФайла,,,,);
       ЭтоКаталог = ?(Прав(Лев(АтрибутыФайла,4),1)="1",1,0);
       
       Если ЭтоКаталог=1 Тогда
           Форма.Закладки.ДобавитьЗначение(Путь+ИмяФайла+"\",Обрезать(ИмяФайла));
       КонецЕсли;
       
       ИмяФайла = "";
       ИмяФайла = ФС.НайтиСледующийФайл();
   КонецЦикла;    
КонецПроцедуры
16 DrRaptor
 
10.01.13
10:23
Все работает, я же написал уже.
Просто маска "*.*" не воспринимается - точка только для файлов, папки так не находятся. А вот "*-*" (для папки "АВ-1200...") или "А*" (для папки "А123...")отлично работает.
17 monsterZE
 
10.01.13
10:28
(16) я мож не догоняю чего =) в (15) у меня выводит все папки диска с: например..
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс