8.х Получить имя файла в каталоге

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем v0233, 10 июн 2011.

  1. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Добрый день.
    Подскажите пожалуйста как получить имя файла в каталоге при условии что он самый последний созданный.
  2. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Код:
    НайденныеФайлы = Новый Массив;
    
    НайденныеФайлы = НайтиФайлы("C:", "*.*");
    Для Каждого Фл Из НайденныеФайлы Цикл
    
    Сообщить(фл.ПолучитьВремяИзменения());
    
    КонецЦикла;
    
    
    
  3. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Спасибо большое за эту функцию.
    У меня еще один маленький вопрос. Если ли какая нибудь дополнительная процедура чтобы сразу выбрать файл последний созданный. а то 1с их перебирает (это занимает очень продолжительно время) и проверяет каждый файл на создание. Или если только каждую неделю файлы перемещать в другую папку как хранилище, но это не удобно.
    (у меня просто файлы с каждым днем все добавляются и добавляются).
  4. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Встроенной функции нет, вроде, только писать свою.

    Или использовать следущее:
    ПолучитьВремяИзменения (GetModificationTime)
    Синтаксис:

    ПолучитьВремяИзменения()
    Возвращаемое значение:

    Тип: Дата. Местное время последнего изменения файла.
    Описание:

    Получает время последнего изменения файла.

    Доступность:

    Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.
    Примечание:

    Применим только к файлам и каталогам, которые реально существуют.
    Для работы метода на веб-клиенте, необходимо предварительно подключить расширение работы с файлами.
    В режиме совместимости выдает местное время последней модификации файла с ошибкой NTFS. Если файл изменен летом, а просматривается зимой, то полученное время отстает на 1 час. Если файл изменен зимой, а просматривается летом, то полученное время опережает на 1 час.
    Если режим совместимости с 8.1 выключен, то время выдается без ошибки.
  5. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    А есть возможность называть их соответствующим образом?
    Т.е. допустим:
    МойФайл_20110608
    МойФайл_20110609
    МойФайл_20110610
    и т.д.
    Тогда просто бы отсортировали по имени, не получая дату создания.
  6. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Я сделал что то типа. В конце выдает дату последнего созданного файла.
    Но все равно очень долго приходится ждать пока переберет. Несколько секунд. + у меня эти файлы на сервере находятся, поэтому 1с перебирает их по локалке.

    Код:
    Дата=НачалоДня(ТекущаяДАТА());
    НайденныеФайлы = Новый Массив;
    
    НайденныеФайлы = НайтиФайлы(""+константы.ПутьКПапкеСЗаписями.Получить()+Справочники.Пользователи.НайтиПоНаименованию(ПользователиИнформационнойБазы.ТекущийПользователь()).ДобавочныйНомер, "*.wav");
    Для Каждого Фл Из НайденныеФайлы Цикл
    
    Если фл.ПолучитьВремяИзменения()>Дата Тогда
    Дата=фл.ПолучитьВремяИзменения();
    КонецЕсли;
    
    КонецЦикла;
    Сообщить (Дата);
    
    ВОПРОС: у меня 1с + MSSQL на другом сервере.
    Если эти файлы (которые перебирает 1с) перекачать на этот сервер (1c+MSSQL), то можно ли в процедуре прописать так чтобы сервер сам перебирал и выдавал результат текущему пользователю. :angry:
  7. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Я сначала так и хотел. но тут
    Проблема в том что файлы создаются автоматически программой, в которой имя файла закладывается дата создания и еще целая куча случайный чисел типа [100]_100-154848_20110610133435(192).wav
    А изменить этот алгоритм скорее всего не получится.
  8. kavak
    Offline

    kavak Опытный в 1С

    Регистрация:
    13 май 2010
    Сообщения:
    703
    Симпатии:
    0
    Баллы:
    26
    Вы в 1С можете отсечь ненужные символы имени.И получить желаемое.
  9. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    И еще небольшой вопрос.
    Если у меня на сетевой папке стоит пароль как мне в коде это прописать?
    Это делается для того чтобы не сохранять сетевой пароль в windows потомучто пользователи тогда смогут получить доступ к этой папке.
  10. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Кстати не увидел сразу я ищу файлы по изменению
    ПолучитьВремяИзменения()
    а мне нужно по Созданию
    не могу найти как узнать время создания файла

    вот что нашел.
    ПолучитьВремяИзменения (GetModificationTime)
    ПолучитьНевидимость (GetHidden)
    ПолучитьТолькоЧтение (GetReadOnly)
    Размер (Size)
    Существует (Exist)
    УстановитьВремяИзменения (SetModificationTime)
    УстановитьНевидимость (SetHidden)
    УстановитьТолькоЧтение (SetReadOnly)
    ЭтоКаталог (IsDirectory)
    ЭтоФайл (IsFile)
  11. kavak
    Offline

    kavak Опытный в 1С

    Регистрация:
    13 май 2010
    Сообщения:
    703
    Симпатии:
    0
    Баллы:
    26
    Файлы у Вас будут меняться перед получением 1С?Вы же говорили что они генерируются программой,после происходит загрузка в 1С значит.Время создания = время изменения
  12. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Да это так, но иногда эта программа создавая новый файл изменяет другой который был уже был до этого создан. Странная но работает.
    Поэтому мне нужно чтобы 1с искала по дате создания. чтобы я был на 100% уверен что это последний созданный.
  13. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.735
    Симпатии:
    508
    Баллы:
    204
    Вот и я клоню к этому, но перебирать файлы в директроии все-таки придется, как не крути.

Поделиться этой страницей