Имя: Пароль:
1C
1C 7.7
v7: поделитесь плиз скриптом перебора файлов в каталоге.
,
0 Кокос
 
17.10.12
15:37
собственно сабж. в каталог периодически заливаются файлы. их надо периодически поднимать в доки
1 Heckfy
 
17.10.12
15:40
Завтра апни. Дома где то была обработка обхода каталога с подкаталогами.
2 GLazNik
 
17.10.12
15:40
(0) а че там "скриптовать" то? фс.НайтиПервыйФайл(); фс.НайтиСледующийФайл
3 Кокос
 
17.10.12
15:40
(1) завтра поздно. сам уже напишу :))
4 Кокос
 
17.10.12
15:43
нашел глобальным поиском в 7рке. совсем 7рку забыл :))
5 Кокос
 
17.10.12
16:29
а как такой код

   Connection    = Новый ComОбъект("ADODB.Connection");
   Command        = Новый ComОбъект("ADODB.Command");
   СтрокаПодключения = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq="+Файл.Путь+";Extensions=csv;";
   Connection.ConnectionString = СтрокаПодключения;
   Connection.Open();
   Command.ActiveConnection = Connection;
   
   Команда = "SELECT * FROM ["+файл.Имя+"]";
   Command.CommandText = Команда;
   Recordset = Command.Execute();
   Сообщить("Выполнил");
   
   ЧислоПолей = Recordset.Fields.Count;

на 7рку переписать? и вообще он пойдет в лёт?:)
6 Heckfy
 
17.10.12
16:32
Ну так искать мне обработку дома или не искать? Она, по моему, чисто на 1С написана, без внешних приблуд.
7 Кокос
 
17.10.12
16:33
(6) да перебор файлов я из ОбновлениеИБ вытащил. вот теперь как мне csv файл с OEM кодировкой поднять....
8 GLazNik
 
17.10.12
16:35
(5) Меняй

Connection    = Новый ComОбъект("ADODB.Connection");
Command        = Новый ComОбъект("ADODB.Command");

на

Connection    = СоздатьОбъект("ADODB.Connection");
Command        = СоздатьОбъект("ADODB.Command");

Остальное вроде как без изменений
9 vladko
 
17.10.12
16:52
для 7ки
файл.хххх не прокатит. Надо другим объектом воспользоваться. Обычной ТЗ наверное придётся.
10 Кокос
 
17.10.12
16:54
(9) текстовиком не поднимается... там только две кодировки. вин и дос.. обе не подходят. оем нет...
11 Кокос
 
17.10.12
16:57
вот нашел, сейчас проверю

Процедура Сформировать()
   Перем Имя,Путь;
   Байт=255;
   Если ФС.ВыбратьФайл(0,Имя,Путь,"","Файлы|*","*")=0 Тогда
       Возврат;
   КонецЕсли;
   СтримВход=СоздатьОбъект("ADODB.Stream");
   СтримВход.Type=2;
   СтримВход.charset="windows-1251";
   СтримВход.Open();
   СтримВход.LoadFromFile(Путь+Имя);
   СтримВыход=СоздатьОбъект("ADODB.Stream");
   СтримВыход.Type=2;
   СтримВыход.charset="utf-8";
   СтримВыход.LineSeparator=-1;
   СтримВыход.Open();
   Всего=СтримВход.size;
   Пока СтримВход.EOS=0 Цикл
       СтримВыход.WriteText(СтримВход.ReadText(Байт),?(Байт=-2,1,0));
       Состояние("" + Формат(100 * СтримВход.position/Всего,"Ч(0)5.2")+"%");
   КонецЦикла;
   СтримВыход.SaveToFile(Путь+Имя+".utf8",2);
КонецПроцедуры
12 GLazNik
 
17.10.12
16:57
(9) а в чем проблема? Методы из (2) как раз и возвращают имена файлов. путь вроде тож известен должен быть.
13 Кокос
 
18.10.12
11:59
Код в принципе рабочий. Только не понятно где поменять запятую на точку с запятой. Ато делит не там где надо.

  Connection    = СоздатьОбъект("ADODB.Connection");
   Command        = СоздатьОбъект("ADODB.Command");
   СтрокаПодключения =  "Driver={Microsoft Text Driver (*.txt; *.csv)}; DriverId=27; DefaultDir="+Каталог+"; Extensions=csv; HDR=NO; IMEX=1;charset=utf8";
   Connection.ConnectionString = СтрокаПодключения;
   Connection.Open();
   Command.ActiveConnection = Connection;
   
   Команда = "SELECT * FROM ["+ИмяФайла+"]";
   Command.CommandText = Команда;
   Rs = Command.Execute();
   Сообщить("Выполнил");
   
   ЧислоПолей = Rs.Fields.Count;


   Rs.MoveFirst();                
   Пока Rs.EOF() = 0 do  

     Сообщить(Rs.Fields(0).Value);
     Сообщить(Rs.Fields(1).Value);
     Сообщить(Rs.Fields(2).Value);
     Сообщить(Rs.Fields(3).Value);
     Сообщить(Rs.Fields(4).Value);
     Rs.MoveNext();  
   КонецЦикла;
14 GLazNik
 
18.10.12
12:14