Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
16 апр 2024, 12:05

Функция НайтиФайлы() не работает!

Автор Shkerin, 21 мар 2011, 09:52

0 Пользователей и 1 гость просматривают эту тему.

Shkerin

Добрый день!
Никак ни могу заставить работать функцию НайтиФайлы(), пример:

    Если НайтиФайлы("D:\СОБЫТИЯ\Прием.txt") <> Неопределено Тогда // Если файл существует
        УдалитьФайлы("D:\СОБЫТИЯ\Прием.txt")
    КонецЕсли;

Файл и 1С на локальном компе.

Klyacksa

1. НайтиФайлы(<Путь>, <Маска>). То есть, в Вашем случае нужно использовать:
    НайтиФайлы("D:\СОБЫТИЯ","Прием.txt")
2. Для проверки существования файла есть отдельная функция:
      ФайлНаДиске = Новый Файл(ИмяФайла);
    Если ФайлНаДиске.Существует() Тогда
        Сообщить("Файл существует.");
    Иначе
        Сообщить("Файл не существует.");
    КонецЕсли;
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Shkerin

    НайтиФайлы("D:\СОБЫТИЯ","Прием.txt")
Приведенный код всегда возвращает Истину! Не зависимо от того, существует файл или нет. Пробовал разные варианты работы: с маской и без, прямой или обратный слеш. Как об стенку горох. В процессе отладки выгружал возврат в массив, он всегда оказывался пустым.

При исползовании следующего кода все сразу заработало:
      ФайлНаДиске = Новый Файл(ИмяФайла);
    Если ФайлНаДиске.Существует() Тогда
        Сообщить("Файл существует.");
    Иначе
        Сообщить("Файл не существует.");
    КонецЕсли;


Но тут возник еще один вопрос: в программе использую объект ТекстовыйДокумент, но там нет метода проверки существования файла(.Существует()) как при использовании объекта Файл. Получается, что для проверки существования текстового файла необходимо создавать лишний объект Файл?

Klyacksa

Про НайтиФайлы - внимательно читайте справку.
ЦитироватьВозвращаемое значение:
Тип: Массив. Массив из значений типа Файл, содержащий найденные файлы.

Про ТекстовыйДокумент: да, лучше в начале проверять существование, а потом работать с ТекстовымДокументом.
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Shkerin

ЦитироватьПро НайтиФайлы - внимательно читайте справку.
Klyacksa виноват, привел неверный код, когда написал про возврат Истины. Правильный вариант:
Если НайтиФайлы("D:\СОБЫТИЯ","Прием.txt") <> Неопределено Тогда

Пока искал в инете ответ, наткнулся на полезную рекомендацию:
"Я бы рекомендовал в случае больших объемов выгрузки использовать не ТекстовыйДокумент а ЗаписьТекста, иначе возможна ошибка "нехватка памяти". ЗаписьТекста сразу пишет на диск, а ТекстовыйДокумент пишет только в конце!"
Надеюсь кому-то пригодиться.

Все же по поводу использования функции НайтиФайлы(), так и не нашел толкового ответа.  :dfbsdfbsdf:

Klyacksa

Shkerin , дубль два:
ЦитироватьВозвращаемое значение:
Тип: Массив. Массив из значений типа Файл, содержащий найденные файлы.
То есть в любом случае, возвращается МАССИВ. Если файлы не найдены - то массив пустой.
Если НайтиФайлы("D:\СОБЫТИЯ","Прием.txt").Количество()>0 Тогда
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Shkerin

книга 1С:Предприятие 8.1 Простые примеры разработки, с.335, листинг 9.35:
Если НайтиФайлы("C:\Temp\Sklad.xml") <> Неопределено Тогда
    УдалитьФайлы("C:\Temp\Sklad.xml");

Выходит НЕПРАВИЛЬНЫЙ ПРИМЕР!  :^454^:

Klyacksa, благодарю за помощь:
Если НайтиФайлы("C:\Temp\Sklad.xml").Количество() > 0 Тогда
    УдалитьФайлы("C:\Temp\Sklad.xml");

Получаем РАБОЧИЙ КОД!  :)

Klyacksa

Негодяи)))
У нас когда-то в универе преподы, допустившие ошибку, отмазывались - мол, это чтобы Вы не бездумно переписывали  :ooifh:
xxx: Спасибо! Я бы загуглил, но ты интересней. Материшься. Злишься. Послать можешь...

Мысль - это оргазм мозга. Кто способен его испытать - получают истинное наслаждение, остальным приходится имитировать

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск