Имя: Пароль:
1C
 
Кодировка при подключении к внешнему источнику данных(MySQL)
0 assest
 
10.11.15
10:29
чвпаи
1 assest
 
10.11.15
10:29
Платформа 8.3
Подключаюсь к базе. Строка Соединения:
|DRIVER={MySQL ODBC 3.51
|SERVER=192.168.1.112;
|DATABASE=parserbosch;"

Вижу таблицы, добавляю их. Обращаюсь запросам к ним.
Пример одного из полей "Лодочные моторы Внутри СЃСѓРґРЅР°", что равно "Лодочные моторы Внутри судна". это кодировка CP1251

Пробовал подключаться и устанавливать соединение с параметром
CODEPAGE=CP1251;
CODEPAGE=UTF-8;
CODEPAGE=UTF8;

При первом варианте ошибка, при втором и третьим без изменений.
Кодировка в базе UTF-8.

КАК мне Подключиться с правильной кодировкой, или как раскодировать получаемые данные без сопоставления каждому символу, раскодированного символа?
2 Живой Ископаемый
 
10.11.15
10:36
3 assest
 
10.11.15
10:41
(49) Мой коллега сказал, что это похоже на "вырывание гланд через ж**у бор-машиной с приминением автогена"(с)

У меня 75 тысяч таких строк, можно как - нибудь не через винт?
4 Живой Ископаемый
 
10.11.15
10:42
2(3) да, помещать их все в один файл, и потом преобразовывать сразу, а не по-одной...
:)
5 assest
 
10.11.15
10:45
Это таблица, я так понимаю надо собрать в строку, а потом разобрать ее (4) Так ты предлагаешь действовать?
6 cw014
 
10.11.15
10:45
Выполни запрос set charset utf 8
7 assest
 
10.11.15
10:46
(6) А можно синтаксис, как это будет выглядеть в 1С?
8 cw014
 
10.11.15
10:47
ADO.Execute('set charset utf 8');
Result = ADO.Execute('select * from mytable');
9 assest
 
10.11.15
10:51
(8)
ADOСоединение  = Новый COMОбъект("ADODB.Connection");
ADOСоединение.Open("Provider=SQLOLEDB.
|Persist Security Info=False;
|User ID="+Пользователь+";
|Password="+ Пароль+";
|Initial  Catalog="+
|Data  Source="+ Сервер);

Такое подключение?
10 cw014
 
10.11.15
10:59
Driver={MySQL ODBC 5.1 Driver};
Server=***;
Database=***;
User=***;
Password=***;
Option=3;
11 assest
 
10.11.15
11:09
(10) Что то он вернул, пытаюсь заглянуть во внутрь, может подскажешь как выгрузить результат в таблицу?
12 assest
 
10.11.15
11:29
Вот так заработало, все переведено в нужную кодировку

ADOСоединение  = Новый COMОбъект("ADODB.Connection");
ADOСоединение.Open("Driver={MySQL ODBC 5.1 Driver};
|Server=192.168.1.112;
|Database=parserbosch;
|User=root;
|Password=123;
|Option=3;");
ADOСоединение.Execute("set charset utf8");
RS = ADOСоединение.Execute("select * from modification");
ТЗ=Новый ТаблицаЗначений;
Для Каждого колонка Из ВнешниеИсточникиДанных.SQLБазаМоделей.Таблицы.modification.СоздатьОбъект().ПолучитьИзменяемыеПоля() Цикл
    ТЗ.Колонки.Добавить(Колонка);
КонецЦикла;    
Пока RS.EOF() = 0 Цикл
    НС=ТЗ.Добавить();
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        НС[колонка.Имя] = RS.Fields(Колонка.Имя).Value;
        RS.MoveNext();
    КонецЦикла;;    
    Если ТЗ.Количество()>=77 Тогда
        Прервать;
    КонецЕсли;    
КонецЦикла;


1,7 секунды на подключение
1,3 на обработку 300 записей
13 assest
 
10.11.15
11:29
Всем спасибо за помощь (10) (4)
14 assest
 
10.11.15
11:54
Народ подскажите, в чем проблема?
при таком коде половина данных не совпадает с данный в таблице куда я подключаюсь. все данные выглядят осмысленно
15 assest
 
10.11.15
12:00
Нашел, надо было RS.MoveNext(); вынести из цикла
16 Живой Ископаемый
 
10.11.15
12:02
э... из внутреннего цикла. внутри внешнего - оставить...
17 assest
 
10.11.15
12:26
(16) Да это я и имел ввиду
18 cw014
 
10.11.15
12:39
(17) А зачем тебе вообще внешний источник данных?
19 assest
 
10.11.15
14:58
Я начинал подключаться через него, а теперь беру названия колонок
Независимо от того, куда вы едете — это в гору и против ветра!