Имя: Пароль:
1C
1С v8
Перебор папок
, ,
0 knij
 
21.06.17
11:16
Здравствуйте! Прошу помочь.
Необходимо сделать перебор подкаталогов в выбранном каталоге.
Кусочек моего кода:
МассивКаталогов = Найти(Путь,"*",Истина);
Для Каждого Папка Из МассивКаталогов Цикл
    Сообщить(Папка.ПолноеИмя);
КонецЦикла;

Но он не работает, отладчик мимо цикла идет.
1 Ёпрст
 
21.06.17
11:18
Найти с 3 параметрами ? И даже ошибки не выдаёт ? Удивительно
2 Ёпрст
 
21.06.17
11:20
Ну и, Найти() возвращает Число, а не массив.
3 Ёпрст
 
21.06.17
11:20
Мот того, покажешь реальный код ?
4 knij
 
21.06.17
11:22
(1)
Синтаксис:
НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)
5 knij
 
21.06.17
11:23
Ошибочка вместо Найти, НайтиФайлы
6 Ёпрст
 
21.06.17
11:23
(4) теперь смотри в (0)
7 Ёпрст
 
21.06.17
11:23
(4) "*.*"
8 Chameleon1980
 
21.06.17
11:24
во первых у тебя в (0) - НАйти
второе - вроде маска пишется типа "*.*"
для всех
9 Chameleon1980
 
21.06.17
11:24
и третье показывай кода больше
10 Ёпрст
 
21.06.17
11:25
Ну и это, Путь то чему хоть равен ?
11 knij
 
21.06.17
11:34
(9) (10) Путь - папка внутренних документов, выбираю на форме.
Код выглядит примерно так:
&НаКлиенте
Процедура Поиск(Команда)
   ПоискКаталогов();
КонецПроцедуры

&НаСервере
Процедура ПоискКаталогов()
   МассивКаталогов = НайтиФайлы(Путь, "*.*", Истина);
   Для Каждого Папка Из МассивКаталогов Цикл
    Сообщить(Папка);
   КонецЦикла;
КонецПроцедуры
12 Ёпрст
 
21.06.17
11:39
(11) И ?
Сообщить(Путь) ?
13 Ёпрст
 
21.06.17
11:40
И не видно, где ты там путь передаешь в серверную процу
14 knij
 
21.06.17
11:41
(13) Путь выводит, подкаталоги нет
15 Chameleon1980
 
21.06.17
11:46
для подкаталогов нужно, наверное, типа рекурсии делать

(13) ПоискКаталогов у него, наверное, в модуле обработки
путь - реквизит обработки
16 Chameleon1980
 
21.06.17
11:47
(15) вложенность есть дальше?
17 knij
 
21.06.17
11:50
(16) Верно, путь - реквизит обработки
Вложенность в Путь? Если, да, то имеется
18 Ёпрст
 
21.06.17
12:08
Вот так, че кажет ?

Сообщить(НайтиФайлы("C:\", "*.*", Истина).Количество());
19 lodger
 
21.06.17
12:20
&НаСервере
НайтиФайлы(Путь, "*.*", Истина)

+

&НаКлиенте
"Путь - папка внутренних документов, выбираю на форме"

а сервер у вас де? у него такой же путь есть? али база файловая?
20 knij
 
26.06.17
06:52
Прошу помочь, никак не удается перебрать папки в папке внутренних документов. Пожалуйста, подскажите как быть
В моем случае папка - справочникссылка.папкивнутреннихдокументов
21 1dvd
 
26.06.17
06:56
(20) на вопросы отвечай, иначе никто не сможет помочь
22 1dvd
 
26.06.17
06:56
и это... ты уверен, что данный каталог существует на сервере?
23 knij
 
26.06.17
06:58
(21) папка существует, я его выбираю на форме
24 knij
 
26.06.17
07:09
Путь - реквизит формы(СправочникСсылка.ПапкиВнутреннихДокументов)
25 Рэйв
 
26.06.17
07:10
(24)я не понял.Ты хочешь перебрать папки в файловой системе или группы в справочнике?
26 knij
 
26.06.17
07:18
(25) Прошу прощения за непонятное объяснение ситуации, написанное выше.
Как я понимаю это справочник.
27 1dvd
 
26.06.17
07:22
ппц
28 Рэйв
 
26.06.17
07:37
(26)Ну ты замутил интиргу:-)
29 Рэйв
 
26.06.17
07:38
(26)Сформулируй вопрос еще раз, на этот раз по возможности на литературном русском.
30 igorPetrov
 
26.06.17
07:39
(29) не смогет он.
31 Рэйв
 
26.06.17
07:40
(30)Да, если честно, у меня тоже есть сомнения:-)
32 knij
 
26.06.17
09:40
(30) (31) Как я понял, перебор можно осуществить с помощью выборки
    Выборка = Справочники.ПапкиВнутреннихДокументов.ВыбратьИерархически(ПутьКПапке);
    Сообщить(Выборка.Наименование);
    Пока Выборка.Следующий() Цикл
        Сообщить(Выборка.Наименование);
    КонецЦикла;

А теперь другой вопрос, не получается сделать условие, не подскажите где проблема? Условие заключается в том, что если в колонке текущей строки значение = имени подпапки, полученного при переборе, то...
Выборка = Справочники.ПапкиВнутреннихДокументов.ВыбратьИерархически(ПутьКПапке);
    Пока Выборка.Следующий() Цикл
        НаименованиеП = Выборка.Наименование;
        НаименованиеС = ТекСтрока[ИндексКолонки];
        Если НаименованиеП = НаименованиеС Тогда
            Папка = Выборка;
        Иначе
            Текст = "Папки не существует";            
        КонецЕсли;
    КонецЦикла;
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан