В общем пришлось писать самому.
<ВхИмяКаталога> - строка с именем каталога, содержимое которого необходимо получить;
<ВхРекурсия > - (необязательный) число. По умолчанию 1. Если 1 производится рекурсивный поиск объектов ФС;
<ВхТолькоКаталоги > - (необязательный) число. По умолчанию 0. Если 1 производится поиск только каталогов;
<ВхСписок> - (необязательный) служебный параметр со списком значений;
Возвращает структуру, значения которой содержат структуры с параметрами:
<Каталог> - строка с именем каталога;
<ИмяФайла> - строка с именем файла;
<РазмерФайла> - размер файла в байтах;
<АтрибутыФайла> - строка с атрибутами файла;
Строковое значение длиной 9 символов, в котором закодированы атрибуты файла. Символы могут принимать значения ''0'' или ''1'':
первый символ: если ''1'' - файл только для чтения;
второй символ: если ''1'' - скрытый файл;
третий символ: если ''1'' - системный файл;
четвертый символ: если ''1'' - каталог;
пятый символ: если ''1'' - архивный файл;
шестой символ: если ''1'' - обычный файл (все другие атрибуты не установлены);
седьмой символ: если ''1'' - временный файл;
восьмой символ: если ''1'' - файл, сжатый каким-либо архиватором;
девятый символ: если ''1'' - нет доступа к файлу.
<ВремяСоздания> - строка с датой и временем создания файла;
<ВремяПоследнегоДоступа> - строка с датой и временем последнего доступа к файлу;
<ВремяПоследнейЗаписи> - строка с датой и временем последней записи файла;
<РасширенноеИмяФайла> - строка с полным именем файла;
<ЭтоКаталог> - число, значение 1 указывает, что объект ФС является каталогом.
Функция ПолучитьАттрибутыФайла(ВхИмяФайла)
ВрмВозврат = СоздатьОбъект("СписокЗначений");
ВрмФС = СоздатьОбъект("ФС");
ВрмРазмерФайла = ПолучитьПустоеЗначение();
ВрмАтрибутыФайла = ПолучитьПустоеЗначение();
ВрмВремяСоздания = ПолучитьПустоеЗначение();
ВрмВремяПоследнегоДоступа = ПолучитьПустоеЗначение();
ВрмВремяПоследнейЗаписи = ПолучитьПустоеЗначение();
ВрмРасширенноеИмяФайла = ПолучитьПустоеЗначение();
ВрмТекКаталог = ВрмФС.ТекКаталог();
ВрмФС.АтрибутыФайла(ВхИмяФайла, ВрмРазмерФайла, ВрмАтрибутыФайла, ВрмВремяСоздания,
ВрмВремяПоследнегоДоступа, ВрмВремяПоследнейЗаписи, ВрмРасширенноеИмяФайла);
ВрмВозврат.ДобавитьЗначение(ВрмТекКаталог, "Каталог");
ВрмВозврат.ДобавитьЗначение(ВхИмяФайла, "ИмяФайла");
ВрмВозврат.ДобавитьЗначение(ВрмРазмерФайла, "РазмерФайла");
ВрмВозврат.ДобавитьЗначение(ВрмАтрибутыФайла, "АтрибутыФайла");
ВрмВозврат.ДобавитьЗначение(ВрмВремяСоздания, "ВремяСоздания");
ВрмВозврат.ДобавитьЗначение(ВрмВремяПоследнегоДоступа, "ВремяПоследнегоДоступа");
ВрмВозврат.ДобавитьЗначение(ВрмВремяПоследнейЗаписи, "ВремяПоследнейЗаписи");
ВрмВозврат.ДобавитьЗначение(ВрмРасширенноеИмяФайла, "РасширенноеИмяФайла");
ВрмВозврат.ДобавитьЗначение(Сред(ВрмАтрибутыФайла,4,1), "ЭтоКаталог");
Возврат ВрмВозврат;
КонецФункции
Функция ПолучитьСодержимоеКаталога(ВхИмяКаталога, ВхРекурсия = 1, ВхТолькоКаталоги = 0, ВхСписок = "")
Если Прав(ВхИмяКаталога, 1) <>"\" Тогда
ВхИмяКаталога = ВхИмяКаталога + "\";
КонецЕсли;
ВрмВозврат = ВхСписок;
Если ВрмВозврат = "" Тогда
ВрмВозврат = СоздатьОбъект("СписокЗначений");
КонецЕсли;
ВрмФС = СоздатьОбъект("ФС");
ВрмТекКаталог = ВрмФС.ТекКаталог();
ВрмФС.УстТекКаталог(ВхИмяКаталога);
ВрмИмяФайла = ВрмФС.НайтиПервыйФайл("*.*");
Пока ПустоеЗначение(ВрмИмяФайла) = 0 Цикл
Если Лев(ВрмИмяФайла,1) <> "." Тогда
ВрмАтрибутыФайла = ПолучитьАттрибутыФайла(ВрмИмяФайла);
Если ВрмАтрибутыФайла.Получить("ЭтоКаталог") = "1" Тогда
ВрмВозврат.ДобавитьЗначение(ВрмАтрибутыФайла, ВхИмяКаталога + ВрмИмяФайла);
ИначеЕсли ВхТолькоКаталоги = 0 Тогда
ВрмВозврат.ДобавитьЗначение(ВрмАтрибутыФайла, ВхИмяКаталога + ВрмИмяФайла);
КонецЕсли;
Если ВрмАтрибутыФайла.Получить("ЭтоКаталог") = "0" Тогда
ИначеЕсли ВхРекурсия = 1 Тогда
ПолучитьСодержимоеКаталога(ВхИмяКаталога + ВрмИмяФайла, ВхРекурсия, ВхТолькоКаталоги, ВрмВозврат);
КонецЕсли;
КонецЕсли;
ВрмИмяФайла = ВрмФС.НайтиСледующийФайл();
КонецЦикла;
ВрмФС.УстТекКаталог(ВрмТекКаталог);
Возврат ВрмВозврат;
КонецФункции
Комментариев нет:
Отправить комментарий