Имя: Пароль:
1C
1С v8
Читаем csv-файл при помощи ADODB. Кодировка
0 oly123456
 
28.02.12
12:49
Требуется читать огромные csv-файлы, поэтому и выбрал этот способ, строку разбирать на значения не могу, т.к. разделитель может попадаться в текстовом поле.

Читаем csv-файл при помощи ADODB, если текст русскими буквами, тогда выводит "абракадабру".
1. Как исправить кодировку?
2. В ОС Windows 7 (RecordSet.Fields(0).value) в запрос входит только поле с индексом 0, остальные в запрос не попадают почему?

Пример абракадабры:
Вид операции
Продажа, комиссия

/////////////////////////////////////////////////////////////
   Файл = Новый Файл(ИмяВременногоФайла);
   
   Connection = Новый COMОбъект("ADODB.Connection");
   Connection.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)}; DriverId=27; DefaultDir="+Файл.Путь+"; Extensions=csv; HDR=NO; IMEX=1";
   
   Попытка
       Connection.Open();    
   Исключение
       Сообщить ("Не возможно подключится к Microsoft Excel Driver!!!
       |Возможно файл ["+Файл.ПолноеИмя+"] открыт другим пользователем!!!");
       Возврат;
   КонецПопытки;
   
   Попытка
       Стр_SQL = "SELECT * FROM "+ Файл.Имя+"";
       RecordSet=Connection.Execute(Стр_SQL);    
   Исключение
       Сообщить ("Не возможно получить данные из файла ["+ ОписаниеОшибки()+"!!!");
       Возврат;    
   КонецПопытки;
   
   Пока Не RecordSet.EOF Цикл
       
       Наим = СокрЛП(RecordSet.Fields(1).value);
       сообщить(Наим);
       RecordSet.MoveNext();
       
   КонецЦикла;
   RecordSet.Close();
   
   Connection.Close();
/////////////////////////////////////////////////////////////
1 oly123456
 
28.02.12
12:50
Подскажите пожалуйста, очень нады!
2 Kashemir
 
28.02.12
12:53
Connection.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)}; DriverId=27; DefaultDir="+Файл.Путь+"; Extensions=csv; HDR=NO; IMEX=1;charset=cp1251";
3 Kashemir
 
28.02.12
12:55
А вообще гугл в помощь, даже далеко ходить не надо "ADODB.Connection" проблема с кодировкой
4 oly123456
 
28.02.12
12:56
Не помогло:-(, говорят там что-то в реестре Windows надо ковырнуть.
5 andrewks
 
28.02.12
12:56
utf-8
6 oly123456
 
28.02.12
13:02
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1252"="c_1251.nls"
не помогло
7 andrewks
 
28.02.12
13:03
(6) и не поможет
8 oly123456
 
28.02.12
13:03
utf-8 - это куда?
9 andrewks
 
28.02.12
13:04
попробуй сюда: charset=
10 oly123456
 
28.02.12
13:07
Connection.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)}; DriverId=27; charset=utf-8; DefaultDir="+Файл.Путь+"; Extensions=csv; HDR=NO; IMEX=1;";

Не помогло
11 dk
 
28.02.12
13:14
выложи кусок абракадабры на файлообменник
12 oly123456
 
28.02.12
13:27
ИмпортCSV.epf
http://ifolder.ru/28978731

csv-файл для примера
http://ifolder.ru/28978732
13 oly123456
 
28.02.12
13:35
выложил поможите, очень надо!
14 andrewks
 
28.02.12
14:03
(12) бугага. ну ты знатно подколол
15 andrewks
 
28.02.12
14:04
*** Текст.Записать(ИмяВременногоФайла,"windows-1251");
*** Connection.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)}; DriverId=27; charset=windows-1251; DefaultDir="+Файл.Путь+"; Extensions=csv; HDR=NO; IMEX=1;";
16 andrewks
 
28.02.12
14:04
и верни (6) на место
17 oly123456
 
28.02.12
15:02
Все сделал (15,16)
и кодировка ОК
Всем спасибо, отдельное andrewks.
andrewks - рулит!!!

Осталось проверить:
В ОС Windows 7 (RecordSet.Fields(0).value) в запрос входит только поле с индексом 0, остальные в запрос не попадают почему?
18 Serginio1
 
28.02.12
17:14