v7: Как в рамках 7.7 перебрать файлы дерева каталогов? #578943


#0 by heap
Есть подчиненные каталоги. Мне нужно программно перебрать и обработать все файлы с расширением  txt. Возможно ли это?
#1 by Азат
Да, возможно...
#2 by heap
А как?
#3 by Aleksey
А чем НайтиПервыйФайл("*.txt") не нравиться?
#4 by FN
например так: Для х=1 по Текст.КоличествоСтрок .... :):):)
#5 by heap
НайтиПервыйФайл("*.txt") не работает (по крайней мере у меня) А вот за эту подсказку спасибо
#6 by ДенисЧ
У всех работает, а у тебя нет... Так может в консерватории что-то подправить?
#7 by ДенисЧ
только на с: прав на запись нет :-)
#8 by FN
у кого как...
#9 by Aleksey
А УстТекКаталог делал?
#10 by heap
вот как я пытаюсь сделать: В результате получаю    имя=""
#11 by Aleksey
А где УстТекКаталог ?
#12 by ЧеловекДуши
В "ФС.НайтиПервыйФайл(Каталог+"*.txt");" пишется только имя файла , а каталог устанавливается командой "УстТекКаталог(<Свой каталог>)"
#13 by heap
Спасибо. А свой каталог = "B:дир" ?
#14 by Aleksey
Да
#15 by ЧеловекДуши
+Писать моно не только полное имя, а еще маску.
#16 by Aleksey
У тебя тоже СП украл?
#17 by heap
ОК!
#18 by heap
@Писать моно не только полное имя, а еще маску@ В имени файла, - понятно! Но как залезть во все ветки дерева каталогов? (Имена каталогов уникальны)
#19 by ДенисЧ
Рекурсия божественна!
#20 by heap
Пока четко не представляю как организвать перебор имен через рекурсию, но попробую...
#21 by 1Сергей
перебирать можно не только файлы, но и каталоги
#22 by Chai Nic
Познание сущности рекурсии сделает тебя программистом!
#23 by heap
Да работал я с ней, красиво все получается! Но в данном случае есть нечто новое
#24 by heap
Уточнить можешь?
#25 by FN
Примерно так: ... перебор "файлов" Если АтрибутыФайла(....) = это каталог тогда  СканироватьКаталог(ТекущийФайл) КонецЕсли КонецФункции
#26 by FN
+ на всякий случай: Синтаксис: АтрибутыФайла(<ИмяФайла>,<РазмерФайла>,<АтрибутыФайла>,<ВремяСоздания>,<ВремяПоследнегоДоступа>,<ВремяПоследнейЗаписи>,<РасширенноеИмяФайла>) Назначение: Возвращает атрибуты файла (в параметрах). Параметры: <ИмяФайла> - строка с именем файла; <РазмерФайла> - переменная, принимающая размер файла в байтах; <АтрибутыФайла> - переменная, принимающая атрибуты файла; Возвращаемое строковое значение длиной 9 символов, в котором закодированы атрибуты файла. Символы могут принимать значения ''0'' или ''1'': первый символ: если ''1'' - файл только для чтения; второй символ: если ''1'' - скрытый файл; третий символ: если ''1'' - системный файл; четвертый символ: если ''1'' - каталог; пятый символ: если ''1'' - архивный файл; шестой символ: если ''1'' - обычный файл (все другие атрибуты не установлены); седьмой символ: если ''1'' - временный файл; восьмой символ: если ''1'' - файл, сжатый каким-либо архиватором; девятый символ: если ''1'' - нет доступа к файлу. <ВремяСоздания> - переменная, принимающая строку с датой и временем создания файла; <ВремяПоследнегоДоступа> - переменная, принимающая строку с датой и временем последнего доступа к файлу; <ВремяПоследнейЗаписи> - переменная, принимающая строку с датой и временем последней записи файла; <РасширенноеИмяФайла> - переменная, принимающая строку с полным именем файла. Подробнее см. в книгу ''1С:Предприятие 7.7. Описание встроенного языка. Часть 2'', глава 37 ''Работа с Файлами''.
#27 by Chai Nic
Это по сути обычный findfirst/findnext из системного API работы с файлами
#28 by heap
Спасибо
#29 by heap
Наконец-то дошли руки до реализации вышеуказанного перебора папок/файлов. К сожалению есть проблема. При выходе из подчиненной папки, после перебора там файлов, перебор папок текущего уровня не работает. Первый же операор < Возврат ""; > приводит к полному завершению просмотра
#30 by Барбариска
Есть готовый кусок кода для построения дерева каталога. Красииииива - даже выводит в табличку с крестиками - свернуть/развернуть )) Но там все на вложенных таблицах значений и на рекурсиях и принципиально без ~М1 )) Так что если нужно в каком-то другом виде - переделывать нужно
#31 by heap
Можно и с циклом сделать с досрочным завершением по условию. Но это не принципиально. Наталья, а можешь выслать мне этот "готовый кусок кода"?
#32 by Барбариска
Если вечером и из дома - то могу. А про "циклы и досрочные завершения" - даже Аленку, которая С++ учит, "воспитую" ))принципиально )) Если меня совсем сегодня на замучат этим С++ то вечером сделаю
#33 by smaharbA
а чо такая длинная ветка ?
#34 by smaharbA
передавай в список в параметре процедуры, функция тут не нужна
#35 by smaharbA
+ и зачем метка ?
#36 by FN
Функция СканКаталога(ИмяКаталога)    Если Прав(ИмяКаталога,1)<>"" Тогда ИмяКаталога=ИмяКаталога+""; КонецЕсли;
#37 by Барбариска
кинула файлик в почту заодно и на инфостарте разместила, несмотря на тамошние нынешние безобразия ))
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям