Имя: Пароль:
1C
1C 7.7
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 Тогда    
                    Возврат Файлы;
                КонецЕсли;
            КонецЕсли;
            
            Файлы.НоваяСтрока();
            Файлы.ИмяФайла = глФайл(Парам);
            Файлы.ПолныйПуть = Парам;
            Файлы.Создан = Создан;
            Файлы.Размер = Размер;  
            //Файлы.КаталогФайла = Парам;
            Файлы.КаталогФайла = Парам;
        КонецЕсли;
    КонецЕсли;
    
    Состояние("");
    Возврат Файлы;    
КонецФункции