Перейти к содержимому


Услуги программиста 1С
Профессиональные программисты 1С.
Весь комплекс услуг сопровождения 1С.

Курсы 1С
Бухгалтерам, менеджерам
и программистам.
Бесплатно!
Живое индивидуальное обучение по 1С.

Пошук в файловій системі 1С


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1   Lighta

Lighta

      Лейтенант

    • Пользователи
    • PipPip
    • Сообщений: 71
    • Регистрация: 04-March 10
    • Откуда:Ровно , Ровенская Область , Украина

Отправлено 18 August 2010 - 14:59

Написала процедурку яка в вибраному каталозі перебирає всі папки і шукає ert файл, але якщо не в каталозі файли розміщує то записує, а як попадає в цикл до папок - висяк. перший раз до файлової системи звертаюсь, тому не впевненна що правильно написала.
Code
Процедура НайтиКаталог()  
  Перем Размер,Атр,ВС,ВД,ВЗ,Расш;  
  // получим имя первого файла  
  ФГ=СоздатьОбъект("ФС");  
  Файл = ФГ.НайтиПервыйФайл(Путь + "*.*");  
  Пока ПустаяСтрока(Файл) = 0 Цикл  
   Если (Файл <> "*.ert") Тогда  
    ПолноеИмя    = Путь + Файл;  
    ФГ.АтрибутыФайла(ПолноеИмя, Размер, Атр, ВС, ВД, ВЗ, Расш);  
    Если Сред(Атр, 4, 1) = "1" Тогда  
     Имя = ФГ.НайтиПервыйФайл(ПолноеИмя + "*.ert");  
     Пока Имя <> "" Цикл  
      НовыйДок = СоздатьОбъект("Документ.ОбъектМетаданных");  
      НовыйДок.Новый();  
      НовыйДок.ВидОбъекта      = "Внешний Отчет";  
      НовыйДок.ИмяФайла = Имя;  
      НовыйДок.Путь = Путь;  
      НовыйДок.Записать();  
      Имя = ФГ.НайтиСледующийФайл();  
     КонецЦикла;  
    КонецЕсли;  
   Иначе  
    НовыйДок = СоздатьОбъект("Документ.ОбъектМетаданных");  
    НовыйДок.Новый();  
    НовыйДок.ВидОбъекта      = "Внешний Отчет";  
    НовыйДок.ИмяФайла = Файл;  
    НовыйДок.Путь = Путь;  
    НовыйДок.Записать();  
     
   КонецЕсли;  
   Файл    = ФС.НайтиСледующийФайл();  
  КонецЦикла;  
   
КонецПроцедуры

  • 0

#2   Lighta

Lighta

      Лейтенант

    • Пользователи
    • PipPip
    • Сообщений: 71
    • Регистрация: 04-March 10
    • Откуда:Ровно , Ровенская Область , Украина

Отправлено 19 August 2010 - 11:03

Quote (plus)
Файл = ФС.НайтиПервыйФайл(Путь + "*.ert"); Пока ПустаяСтрока(Файл) = 0 Цикл    ПолноеИмя    = Путь + Файл;  

Так працює - але вибирає в каталозі, а в вложені каталоги не заходить, бо відразу задано ert файл шукати. А от при моєму варіанті відразу находить файл "." (хм що за файл, його немає в корені), потім файл ".." (такого теж немає), потім нічого не знаходить при виконанні Файл = ФС.НайтиСледующийФайл(); і переходить на початок циклу Пока ПустаяСтрока(Файл) = 0 Цикл і вибиває бо пусте значення

Добавлено (19.08.2010, 12:03)
---------------------------------------------
Знайшла помилки - працює як треба, виложу код процедури, може хтось буде шукати подібне.

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

  • 0

#3   pak

pak

      Генерал-майор

    • Модераторы
    • Сообщений: 340
    • Регистрация: 02-February 09
    • Откуда:Солнечный Крым

Отправлено 19 August 2010 - 12:19

Просто для справки:
Quote
файл "."

это текущий каталог
Quote
потім файл ".."

это родительский каталог
  • 0

#4   Lighta

Lighta

      Лейтенант

    • Пользователи
    • PipPip
    • Сообщений: 71
    • Регистрация: 04-March 10
    • Откуда:Ровно , Ровенская Область , Украина

Отправлено 20 August 2010 - 13:47

Дякую за пояснення, бо було цікаво це взнати cool . Думала якісь системні папки.

Добавлено (20.08.2010, 14:47)
---------------------------------------------
Підкажіть будь-ласка як зробити перевірку перед створенням документу чи є вже з такими реквізитами документ, бо створюються такі ж самі документи.
Подумала так написати але видає помилку - Объект - документ определенного вида!

Code
НовыйДок = СоздатьОбъект("Документ.ОбъектМетаданных");
Если НовыйДок.ВыбратьПоЗначению(НачДата,КонДата,НовыйДок.Название,Ф)=1 Тогда
     Продолжить;
КонецЕсли;

  • 0


Обратно в Программирование и конфигурирование 1С Предприятия 7.7

Похожие темы




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных