Имя: Пароль:
1C
1С v8
Linux: подключение 1С 8 к базе MySQL
0 satoru
 
02.10.18
11:44
Добрый день. Подскажите как можно подключить базу расположенную на My SQL через код 1С, без использования внешних источников данных, т.к. нужно предоставить возможность пользователю настраивать параметры подключения к базе MySQL.
Платформа: 8.3.10.2168
ОС (1С Сервер): Debian 9.
1 arsik
 
гуру
02.10.18
11:49
Напрямую никак.
Обходные варианты.
1) прокладка в виде вебсервиса на каком ни будь пхп
2) Из виндового клиента.
2 Йохохо
 
02.10.18
11:59
3 PloAl
 
02.10.18
12:11
В (0) причина странная, в режиме предприятия повторно запрашиваются параметры подключения, даже если тот же  пользователь не так давно вводил эти параметры в конфигураторе при настройке внешних источников. Да и стандартное окно настройки параметров подключения можно заменить собственным.
4 Фрэнки
 
02.10.18
12:20
(2) Почему что?
В 1 уже написали, что только в виндовом клиенте доступно.
Ты запостил статью, в которой дано решение только для виндового клиента.
5 satoru
 
02.10.18
12:24
По статье http://catalog.mista.ru/public/522751/ я установил внешний источник и он подключается по Linux, но он не отображает данные и выдаёт ошибку:

Ошибка при выполнении запроса.
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных "НаборДанныхДинамическогоСписка"
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 1064
Описание: [MySQL][ODBC 5.1 Driver][mysqld-5.1.53-community]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '45
T1.id,
T1.id,
T1.time,
T1.time2,
T1.number,
T1."cam_name",
T1."cam_id"
FROM n' at line 1
6 satoru
 
02.10.18
12:25
Поэтому и спрашиваю нет ли аналога для вот этого кода:
Connection = Новый COMОбъект("ADODB.Connection");
7 PloAl
 
02.10.18
13:31
Скорее всего не верный тип выбран в конфигураторе для колонки MySQL.
Убирайте из запроса динамического списка по одной колонке и найдете нужную.
По опыту плохо переваривает УИД и даты с часовым поясом. Попробуйте для таких колонок тип  строка установить.
8 satoru
 
02.10.18
13:44
(7) Проблема в том, что он ругается на тип "Строка", но выборочно. Поле "number" проходит (Строка 10), а поля cam_name и cam_id не проходят (Строка 45).
9 satoru
 
02.10.18
13:49
Я понял 1С не может прочитать данные, где имя колонки содержит символ "_".
10 satoru
 
02.10.18
14:37
Только как решить эту проблему? Имя колонок в базе MySQL менять нельзя.
11 satoru
 
02.10.18
15:10
Решение установили коннектор версии 5.3 и проблема ушла. Всем спасибо за помощь.
12 eklmn
 
гуру
02.10.18
15:12
13 satoru
 
02.10.18
15:16
Вот кстати как программно задать параметры подключения к MySQL:

ПараметрыСоединенияССайтомМИКО = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
ПараметрыСоединенияССайтомМИКО.СтрокаСоединения= "
|DRIVER={MySQL ODBC 5.1 Driver};
|SERVER=192.168.1.10;
|DATABASE=bitrix;
|UID=root;
|PWD=dbpassword_4_user_root;";
ВнешниеИсточникиДанных.СайтМИКО.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединенияССайтомМИКО);
ВнешниеИсточникиДанных.СайтМИКО.УстановитьСоединение();
Запрос = Новый Запрос("ВЫБРАТЬ
                      |   b_stat_browser.Ссылка,
                      |   b_stat_browser.ID,
                      |   b_stat_browser.USER_AGENT
                      |ИЗ
                      |   ВнешнийИсточникДанных.СайтМИКО.Таблица.b_stat_browser КАК b_stat_browser");
Таблица = Запрос.Выполнить().Выгрузить();

информация взята от сюда: http://infostart.dexcel.ru/public/90666/
14 satoru
 
04.10.18
16:29
Ошибка? Это не ошибка, это системная функция.