|
v7: Работа с файловой системой | ☑ | ||
---|---|---|---|---|
0
Славянин
13.03.17
✎
09:28
|
Ребят подскажите. Возможно ли стандартными средствами 1С 7.7 узнать количество выбранных файлов по определённой маске в каталоге? Методов ФС типо "Количество()" нету. Или только прогнать циклом и посчитать?
|
|||
1
VladZ
13.03.17
✎
09:30
|
Да.
|
|||
2
vcv
13.03.17
✎
10:20
|
Можно еще извратиться, с помощью КомандаСистемы, сохранить вывод dir в файл, файл открыть как Текст и получить количество строк. Это может оказаться проще, чем циклом, если нужно считать файлы в большом развесистом дереве каталогов.
|
|||
3
GSoft
20.03.17
✎
19:35
|
еще можно через скрипты аля Shell.Application и т.д.
а можно все таки циклом вот пример глобальной функции //_____________________________________________________________________________ Функция глПоискФайловКаталога(ИмяКаталога, МаскаИмени = "", МаскаРасширения = "", ПоказыватьФайлы = 1) Если ПустоеЗначение(МаскаИмени) = 1 Тогда МаскаИмени = "*" Иначе МаскаИмени = СокрЛП(МаскаИмени); КонецЕсли; Если ПустоеЗначение(МаскаРасширения) = 1 Тогда МаскаРасширения = "*"; Иначе МаскаРасширения = СокрЛП(МаскаРасширения); КонецЕсли; Если Прав(ИмяКаталога,1) <> "\" Тогда ИмяКаталога = ИмяКаталога+"\"; КонецЕсли; //создадим ТЗ тзСписокФайлов = СоздатьОбъект("ТаблицаЗначений"); тзСписокФайлов.НоваяКолонка("Файл", "Строка",,," имя файла"); тзСписокФайлов.НоваяКолонка("Каталог", "Строка",,," каталог файла"); тзСписокФайлов.НоваяКолонка("ПолныйПуть", "Строка",,," полное имя файла"); ФС1 = СоздатьОбъект("ФС"); ФС1.УстТекКаталог(ИмяКаталога); ИмяФайла = ФС1.НайтиПервыйФайл(МаскаИмени + "." + МаскаРасширения); Пока ПустоеЗначение(ИмяФайла) = 0 Цикл Если Лев(ИмяФайла,1) = "." Тогда //это корневая вышестоящая папка ИмяФайла = ФС1.НайтиСледующийФайл(); Продолжить; КонецЕсли; Атр = ""; ФС1.АтрибутыФайла(ИмяФайла,,Атр); Если Сред(Атр,4,1) = "1" Тогда //это папка ИмяФайла = ФС1.НайтиСледующийФайл(); Продолжить; Иначе //это искомый по маске файл Если ПоказыватьФайлы = 1 Тогда Сообщить(ИмяКаталога + ИмяФайла); КонецЕсли; тзСписокФайлов.НоваяСтрока(); тзСписокФайлов.Файл = ИмяФайла; тзСписокФайлов.Каталог = ИмяКаталога; тзСписокФайлов.ПолныйПуть = ИмяКаталога + ИмяФайла; ИмяФайла = ФС1.НайтиСледующийФайл(); КонецЕсли; КонецЦикла; Если тзСписокФайлов.КоличествоСтрок() = 0 Тогда Возврат 0; Иначе Возврат тзСписокФайлов; КонецЕсли; КонецФункции// глПоискФайловКаталога |
|||
4
GSoft
20.03.17
✎
19:43
|
вдогонку - авось пригодится
//_____________________________________________________________________________ Функция глПолучитьСписокФайловВКаталоге(Путь,СканироватьВложенныеПапки = 0,СчитатьПапкиОбьектами = 0,ДопФильтр = "") Экспорт Перем Создан,Размер; Парам = СокрЛП(Путь); Состояние("Сканирование каталога..."); Файлы = СоздатьОбъект("ТаблицаЗначений"); Файлы.НоваяКолонка("ИмяФайла","Строка"); Файлы.НоваяКолонка("ПолныйПуть","Строка"); Файлы.НоваяКолонка("Создан","Строка"); Файлы.НоваяКолонка("Размер","Число"); Файлы.НоваяКолонка("КаталогФайла","Строка"); Если глСуществуетФайл(Парам) = 1 Тогда Если глЭтоКаталог(Парам) = 1 Тогда Если Прав(Парам,1) <> "\" Тогда Парам = Парам + "\"; КонецЕсли; ПолучитьФайлыКаталога(Парам,Файлы, 0, СканироватьВложенныеПапки, СчитатьПапкиОбьектами,ДопФильтр); Иначе Если ДопФильтр<>"" Тогда Если Найти(Парам,ДопФильтр)=0 Тогда Возврат Файлы; КонецЕсли; КонецЕсли; Файлы.НоваяСтрока(); Файлы.ИмяФайла = глФайл(Парам); Файлы.ПолныйПуть = Парам; Файлы.Создан = Создан; Файлы.Размер = Размер; //Файлы.КаталогФайла = Парам; Файлы.КаталогФайла = Парам; КонецЕсли; КонецЕсли; Состояние(""); Возврат Файлы; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |