Всем добрый день! Ищу файлы на диске. Но маска не работает, отбирает все файлы в т.ч. и папки, мне это не надо, мне нужны только файлы.

```1c
    НайтиФайлы(Каталог, "*.*", Истина)
```

Подскажите, что делаю не так.
---
можно, через точку с запятой

```1c
    маска = "Лист Excel (*.xls)|*.xls;*.xlsx|Табличный документ (*.mxl)|*.mxl|Текстовый документ (*.txt)|*.txt|dBase III (*.dbf)|*.dbf|XML (*.xml)|*.xml|";
```
---
ну метод

```1c
    Описание:

    Осуществляет поиск файлов и каталогов по заданной маске, расположенных в заданном каталоге.
```

каталог - это тоже файл, на него отбор не наложишь.
Поэтому, ориентироваться надо на расширение файлов. К тому-же, как правило, смысл искать есть какие-то определенные файлы, а не все подряд.

А признак - файл ли это, уже после получения выборки проверять и делать с ним то что надо, там есть методы.
---
на каталог не работает маска? Не знала..
А можно в маске указать 2 расширения?
---
можно, через точку с запятой

```1c
    маска = "Лист Excel (*.xls)|*.xls;*.xlsx|Табличный документ (*.mxl)|*.mxl|Текстовый документ (*.txt)|*.txt|dBase III (*.dbf)|*.dbf|XML (*.xml)|*.xml|";
```
---
Не вводите людей в заблуждение. Открытие диалога о выборе файлов и поиск файлов в текущем каталоге совсем разные вещи. В маске на поиск файла нельзя указать два расширения.
---
уверены ?
Цитирую СП

```1c
    Глобальный контекст.НайтиФайлы (Global context.FindFiles)
    Глобальный контекст (Global context)
    НайтиФайлы (FindFiles)
    Синтаксис:

    НайтиФайлы(<Путь>, <Маска>, <ИскатьВПодкаталогах>)
    Параметры:

    <Путь> (обязательный)

    Тип: Строка.
    Путь к каталогу, в котором производится поиск. Каталог может быть как на локальной сети, так и на ftp-сервере. При использовании этой схемы в адресах необходимо указывать прямые слеши '/', а не обратные '\'.
    Допускается указание полного имени файла (путь + имя).
    <Маска> (необязательный)

    Тип: Строка.
    Маска выбора файлов.
    Если параметр задан, то первый параметр воспринимается системой как путь к каталогу, в котором требуется найти файлы, удовлетворяющие маске выбора.
    Для операционной системы MS Windows:
    В строке маски, помимо обычных символов, допускается использование символа "*" (звездочка), обозначающего любое число произвольных символов, и "?" (знак вопроса), обозначающего один произвольный символ.
    Для операционных систем Linux, macOS:
    В строке маски допускается использование следующих последовательностей:
    любой символ, допустимый в имени файла. Сопоставление указанных символов производится с учетом регистра;
    "*" (звездочка) - любая последовательность символов;
    "?" (знак вопроса) - любой символ;
    "[" - класс символов. После открывающей квадратной скобки указывается последовательность символов. Паттерн соответствует любому из указанных символов. Можно указывать диапазон, используя "-". Описание класса символов завершается "]". Для указания "-" в качестве символа класса нужно указать его первым или последним символом. Если после "[" указан знак "!", то класс описывает все символы, кроме указанных.
    Для операционных систем iOS и Android:
    В строке маски допускается использование следующих последовательностей:
    любой символ, допустимый в имени файла. Сопоставление указанных символов производится без учета регистра;
    "*" (звездочка) - любая последовательность символов;
    "?" (знак вопроса) - любой символ;
    "[" - класс символов. После квадратной скобки указывается последовательность символов. Шаблон соответствует любому из указанных символов. Можно указывать диапазон, используя "-". Описание класса символов завершается "]". Для использования символа "-" в качестве символа класса нужно указать его первым или последним. Если после "[" указан знак "!", то класс описывает все символы, кроме указанных.
    Пример строки: "Все файлы|*.*|Документы|???.docx;*.[Rr][Tt][Ff];doc[0-9].txt".
    <ИскатьВПодкаталогах> (необязательный)
```

как мы видим в СП, в примере строки указано несколько расширений.

Думаю, маска работает одинаково во всех видах файловых операций. Просто в данном методе интерактивного диалога с пользователем нет
---
Да, действительно, признаю свою ошибку.
Поверил справке, а на деле оказалось не совсем так.
Метод не позволяет несколько масок задать.

если нужно несколько масок, то придется вызывать метод несколько раз, для каждой.

(1)
Косвенно исключить из выборки папки можно наложив маску

Маска = "*."; Т.е. без второй звездочки.

Но это не прокатит, если папку тоже с расширением обозвали.
---
Маска = "*."; Т.е. без второй звездочки.
Это маска выберет только имена оканчивающиеся на точку. Разве нет?
---
Вот так - Маска = "*.erp;*.epf" не работает.
---
тогда перебором.
Один раз для той маски, другой для другой...

P.S. Но мне непонятен тогда пример приведенный в СП. Может 1С-ники ошиблись
---
для них можно так: "*.e??"

или так: "*.e[pr][fp]"
---
квадратные скобки под виндой не работают ))) это только под линухом .. в винде только звездочка и вопросик
---
это так. Только в вопросе не было условия "только под Windows". Но замечание правильное.
---
или так: "*.e[pr][fp]"
Так не работает.
---
"*.e??"
так то точно должно сработать
---
ну да, так работает. Просто хотелось бы более универсальный вариант. Сюда и exe файлы отберутся.
---
а далее в цикле проверять и отсеивать ненужные.
---
ну универсально тогда так :)))

```1c
    &НаКлиенте
    Процедура Команда1(Команда)
    // Вставить содержимое обработчика.
    НашиФайлы = ПоискФайлов("D:","*.png;*.epf");
    КонецПроцедуры

    &НаКлиенте
    Функция ПоискФайлов(Каталог, Маска)
    МассивМасок = СтрРазделить(Маска,";");
    МассивВозврата = Новый Массив;
    Для Каждого Маска Из МассивМасок Цикл
    МассивФайлов = НайтиФайлы(Каталог,Маска);
    Для Каждого Файл из МассивФайлов Цикл
    МассивВозврата.Добавить(Файл);
    КонецЦикла;
    КонецЦикла;
    Возврат МассивВозврата;
    КонецФункции
```
---
я уже сделала в 2 захода, это разовая обработка была. А так наверное да, надо как то перебирать возможные варианты.
---
как выше было сказано, это не для Windows.
Используйте первый вариант: "*.e??"