файловая система 1с77

Тема в разделе "1C и всё что с ней связано", создана пользователем lira89, 10 мар 2011.

  1. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Есть несколько файлов, например "HNF0112019.663" и "HNF0112030.664" (тип текстовый/csv). Они находятся в одном каталоге. Нужно осуществить выборку файлов по нужным параметрам в имени файлов, чтобы последовательно импортировать их в документ. Я сначала должна построить шаблон имени файла, по которому буду искать их.
    Я делала это вот таким образом, но мне выдает ошибку, что неправильный формат файла:
    ШаблонИмениФайла = "HNF*"+День+Месяц+"*.*";
    или
    ШаблонИмениФайла = "HNF*"+День+Месяц+"***.*";
    Что тут не так?
    После того как я найду первый файл, я должна найти по шаблону следующий файл. Как осуществить перебор файлов по данному шаблону имени файла? Может надо использовать метод ФС.НайтиСледующийФайл(), но я не понимаю как это увязать вместе. Буду благодарна за советы и помощь)
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Можно и просто перебрать все в каталоге, и парсить имена ...
     
  3. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Видимо, лучше так
    ШаблонИмениФайла = "HNF"+День+Месяц+".*";
    годится, если день и месяц - строки из двух символов, иначе надо их преобразовать к двухсимвольным строкам
     
  4. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Попробовала вот так, а оно попадает на сообщение, что файл не найден (ищет файл с именем HNF112.*, а надо HNF0112019.663):
    Код (Text):
    ШаблонИмениФайла = "HNF"+День+Месяц+".*";
    Файл=КаталогИБ()+ИмяПапки+"\"+ШаблонИмениФайла;
    Если ФС.СуществуетФайл(Файл)=0 Тогда
    Сообщить("Файл не найден: "+Файл,"!");
    Возврат;
    КонецЕсли;
    PS: Путь к папке с файлом правильно показывает: D:\База студентов\ImportPlatezhei\HNF112.*
    День и месяц получаю следующим образом:
    Код (Text):
    День = ДатаЧисло(ДатаДок);
    ИмяПапки = "ImportPlatezhei";
    Месяц = ПреобразоватьВШестнадцатиричнуюСистему(ДатаМесяц(ДатаДок));
     
  5. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Я бы поставил проверку типа -
    Код ( (Unknown Language)):
    Если Число(День) > 10 Тогда
    День = Строка("0"+День);
    КонецЕсли
     
  6. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    А как тогда быть с цифрами после месяца, они же отличаются в каждом файле:
    HNF0 1 12 019.663
     
  7. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    я писал приблизительно про это.

    в вашем случае - напишите что означает каждая цифра - какие могут быть шаблоны?
     
  8. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Структура названия файла :

    HNFcddmmzzz.MFO, где HNF -имя идентифицирующее учреждение (постоянное), с - номер ЦБУ (в большинстве случаев равен 0), dd -день, mm - месяц в 16-ричной системе, zzz - внутр. счетчик в банке, MFO - МФО филиала.
     
  9. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    т.е. проблемма получается только с этим?

    кстати, в вашем шаблоне пропущенно
    т.е. логично было бы сделать - ШаблонИмениФайла = "HNF0"+День+Месяц+".*";

    Или можно добавить переменную ЦБУ = 0 и делать так ШаблонИмениФайла = "HNF"+ЦБУ+День+Месяц+".*";
    ЦБУ можно засунуть в цикл от 0 до 9
     
  10. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    спасибо всем за помощь, вроде все работает уже)
     
  11. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Можно много обсуждать про шаблон, но так работать все равно не будет. Надо именно циклом перебрать файлы через ФС.НайтиСледующийФайл()
     
  12. lira89

    lira89 Well-Known Member

    Регистрация:
    12 мар 2010
    Сообщения:
    159
    Симпатии:
    0
    Я вот как сделала:
    Код (Text):
    ШаблонИмениФайла = "HNF*"+День+Месяц+"*.*";
    Файл=ФС.НайтиПервыйФайл(ШаблонИмениФайла);
    Если ФС.СуществуетФайл(Файл)=0 Тогда
    Сообщить("Файл не найден: "+Файл,"!");
    Возврат;
    КонецЕсли;
    Пока ФС.СуществуетФайл(Файл)=1 Цикл
    .....
    Файл=ФС.НайтиСледующийФайл();
    КонецЦикла;
     
  13. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    и это неглупо :)
     
  14. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Да не надо молоденьким льстить! Коряво это. Если хотим обработать несколько файлов, то должно быть
    Пока ФС.НайтиСледующийФайл() = 1
     
  15. vbs

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Но поддержать-то надо ! Сама старается в отличие от многих халявщиков. А опыт - дело наживное
     
Загрузка...

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