0. jorikfon 319 17.09.11 14:10 Сейчас в теме

Настройка связи между mysql и 1С через ODBC в версии 8.2.14 (Внешние источники)

В новой редакции платформы 1С 8.2.14 появилась возможность устанавливать связь с внешними источниками данных. У меня была идея написать программу для прямой работы с базой данных на нашем сайте из 1С:Предприятия 8

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо
0. jorikfon 319 17.09.11 14:10 Сейчас в теме
В новой редакции платформы 1С 8.2.14 появилась возможность устанавливать связь с внешними источниками данных. У меня была идея написать программу для прямой работы с базой данных на нашем сайте из 1С:Предприятия 8

Перейти к публикации

1. V_V_V 17.09.11 14:10 Сейчас в теме
Очень интересная возможность новой платформы, да все никак руки не доходят ее попробовать.
Хочется уточнить один вопрос: если я установлю драйвер MySQL, а потом настрою его в "Администратор источников данных ODBC" где-нибудь в "Пользовательский DSN" или "Системный DSN", соответственно прописав там параметры подключения - смогу ли я потом подключаться к этому источнику просто по имени этой настройки? И понадобится ли заново прописывать настройки подключения к источнику данных в каждой обработке при таком подключении?
3. Serj1C 477 17.09.11 20:03 Сейчас в теме
(1) я экспериментировал, параметры подключения вводил дважды:
1) в режиме конфигуратора для автоматического создания структуры таблиц
2) в режиме предприятия для отображения динамического списка записей таблиц.
Параметры вводились только один раз, они запоминаются в каком-то менеджере внешних источников данных, который доступен через "все функции" -> Стандартные -> Управление внешними источниками данных
Lara.Builova; +1 Ответить
4. V_V_V 17.09.11 20:47 Сейчас в теме
(3) Автор пишет "Тут необходимо понимать что в обработке надо обязательно заново прописывать параметры соединения с внешней базой данных, они не хранятся в конфигурации.". Получается, что хранятся? И как потом строка подключения из обработки выглядит? Можно пример?
5. German 871 17.09.11 22:53 Сейчас в теме
6. V_V_V 18.09.11 23:49 Сейчас в теме
(5) Спасибо за дополнительную информацию. Только Ваше подключение практически идентично авторскому. И парочка примечаний "Важно". Выходит к внешнему источнику данных через подключение, описанное в (1), встроенными средствами платформы обратиться нельзя.
Ладно, пока сам не попробую приставать больше не буду...
37. q_i 381 30.03.12 14:24 Сейчас в теме
(1) V_V_V, насчёт подключения с использованием DSN: там просто строка подключения будет иметь вид "DSN=<Имя-DSN>;".
Теоретически, так можно избавиться от необходимости указывать логин/пароль в коде.
2. jorikfon 319 17.09.11 14:18 Сейчас в теме
Это я не пробовал, надо промоделировать :) Пока я прописываю параметры в каждой обработке.
7. dkprim 5 19.09.11 07:34 Сейчас в теме
очень полезная возможность новой версии платформы представлена наглядно в очень полезной публикации этого сообщества :) спасибо :)
9. Spacer 292 19.09.11 19:06 Сейчас в теме
Да, все это безусловно хорошая вещь - внешние источники данных.
Я вначале сильно обрадовался когда узнал что 1С сделала такой механизм.
Но потом был сильно огорчен когда узнал что с этими источниками можно работать только на чтение.:(
k1087; miller-adm; Alex@ander; +3 Ответить
13. jorikfon 319 20.09.11 12:10 Сейчас в теме
(9) Spacer,
Ну собственно не совсем понятно в чем беда. Изменять данные через ODBC вроде всегда можно было. А тут вся фишка в том что с таблицей через запросы можно работать. Вроде запросы всегда только на чтение в 1С использовались :)

Набросаю сегодня завтра пример как я на сайте в данные меняю. Дам ссылку тут.

upd. На инфостарт не в силах перепостить сейчас, потому кому интересно как менять данные через ODBC, смотрите тут.
Попозже оформлю на инфостарте статью.
Lara.Builova; +1 Ответить
10. Alex@ander 20.09.11 04:30 Сейчас в теме
Spacer пишет:

Да, все это безусловно хорошая вещь - внешние источники данных.

Я вначале сильно обрадовался когда узнал что 1С сделала такой механизм.

Но потом был сильно огорчен когда узнал что с этими источниками можно работать только на чтение.:(

Обидно что только на чтение, я уже размечтался что базу данных своего сайта смогу прикрутить и из 1С грузить информацию на сайт
miller-adm; +1 Ответить
11. ramzess 20.09.11 09:31 Сейчас в теме
Как то еще на тестовом релизе пытался связать с базой данных под управлением СУБД LETODB.Так и не получилось победить грабли вида иррациаональных чисел, и если среди DBF файлов базы имелись "пароленные" dbfки их прочитать так и не удалось, пока dbf редактором не исправил заголовок файла. а была такая надежда :(
12. Lara.Builova 20.09.11 09:42 Сейчас в теме
За статью безусловно плюс. Как только появился 14 релиз 8.2 я пыталась подключить через внешние таблицы екселевский файл, пока результат отрицательный. У кого-нибудь получилось?
14. anna_irk 20.09.11 12:18 Сейчас в теме
15. aximo 833 20.09.11 20:13 Сейчас в теме
мне бы было интересно как подключиться к файлу базы данных на сайте (например sqlite) - не задавались таким вопросом?
16. jorikfon 319 20.09.11 22:28 Сейчас в теме
(15) aximo,
Я думаю что принцип соединения аналогичный.
Сначала качаем ODBC драйвер для sqlite.

Вот гугл выдал такую ссылку
http://www.ch-werner.de/sqliteodbc/

Потом из 1С прописываем сотроку соединения по аналогии

ПараметрыСоединенияССайтомМИКО.СтрокаСоединения= " 
|DRIVER={SQLite ODBC Driver}; 
|SERVER=192.168.1.10; 
|DATABASE=bitrix; 
|UID=root; 
|PWD=dbpassword_4_user_root;"; 

Показать


Под рукой нет такой базы чтобы проверить, но суть примерно такая.
17. aximo 833 21.09.11 05:12 Сейчас в теме
sqlite - это файл. допустим он лежит на запароленном фтп... мне кажеться, что подключение будет несколько иное... кто знает - отпишитесь
19. jorikfon 319 21.09.11 10:21 Сейчас в теме
(17) aximo,

Если база на запороленном ftp то надо вероятно другими средствами делать доступ, например поднимать ssh тонель и через него самбой шарить файл базы данных. Ну и строка подключения будет какой то такой.

ПараметрыСоединенияССайтомМИКО.СтрокаСоединения= "
|DRIVER={SQLite ODBC Driver};
|SERVER=192.168.1.10;
|DATABASE=\\SmbShare\databases\mytest.db;
|UID=root;
|PWD=dbpassword_4_user_root;"; 
18. Zhe_ka 21.09.11 10:04 Сейчас в теме
Очень интресная тема, спасибо за статью.. обязательно попробую
20. vec435 15 22.09.11 10:09 Сейчас в теме
Очень интресная тема.И очень полезная,если параметры подключения действительно хранятся в конфигураторе
21. Raminus 23.09.11 17:46 Сейчас в теме
vec435 пишет:
Очень интресная тема.И очень полезная,если параметры подключения действительно хранятся в конфигураторе


А они там не хранятся :)
22. pri_hod 88 24.09.11 23:40 Сейчас в теме
Потестировал на MySQL... Вывод, бестолковая приблуда, зачем промежуточный механизм? какие плюсы использования???
23. comol 4073 14.10.11 12:31 Сейчас в теме
А может вы где-нибудь описание таблиц и полей bitrix выложите? Раз уже занимались этой темой...
24. jorikfon 319 14.10.11 12:44 Сейчас в теме
Так это не секретная информация вроде как :)
http://dev.1c-bitrix.ru/api_help/iblock/fields.php
57. coollerinc 40 30.09.14 15:02 Сейчас в теме
Парни что я делаю не так? поставил себе последнюю платформу(8.3.5.1146), подключил базу через внешний источник данных. Если в конструкторе запросов выбираю поле без нижнего подчеркивания - то все работает. Если выбираю поле с нижним подчеркиванием, то выдает ошибку:

{Форма.Форма.Форма(24)}: Ошибка при вызове метода контекста (Выполнить)
Таблица = Запрос.Выполнить().Выгрузить();
по причине:
Ошибка выполнения запроса
по причине:
Ошибка внешней базы данных:
ошибка при выполнении запроса
по причине:
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 1064
Описание: [MySQL][ODBC 5.1 Driver][mysqld-5.5.25]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 '"section_id"
FROM lesson_article T1' at line 2
25. Uscolegy 18.10.11 13:43 Сейчас в теме
а вот как на 2003 сервере х64 получить доступ к xbase через ODBC ... ни в какую не могу загрузить дрова....
26. petrovaUL 14.11.11 08:21 Сейчас в теме
попробую данный метод когда послю 14 релиз платформы
27. bssat 07.12.11 09:56 Сейчас в теме
Всем доброго дня! Начал разбираться с использованием внешних источников. Столкнулся со следующей проблемой. Создал форму списка для таблицы MySQL. Подключение к Базе MySQL происходит, в обработчике загрузки формы делаю подключение. Но вываливается ошибка и, соответственно таблица пустая. Прилагаю скрин ошибки.
Прикрепленные файлы:
29. jorikfon 319 13.01.12 11:06 Сейчас в теме
(27) bssat, непонятно почему, но у меня в в рабочем коде выскочила точно такая же ошибка как у вас на скриншоте. Пока разбираюсь в чем дело...
28. roha 09.12.11 12:35 Сейчас в теме
у менея точно такая же ошибка, походу при трансляции запроса 1с в mysql есть какойто ограничение по символам, изза етого формируется неправельный запрос (посмотри свой скрин там видно что текст запроса обрезан) если выбрать только 1-3 поля и они уместятся в запросе тогда работает, пока не разобрался с проблемой, возможно глючный ODBC , возможноно и в самой платформе глюк
30. roha 13.01.12 11:28 Сейчас в теме
думаю чето с 1с и ODBC MYSQL, так как если конектится к SQL таких ошибок нет
31. jorikfon 319 13.01.12 11:38 Сейчас в теме
(30) roha, У меня с момента написания статьи запрос работал без проблем до 26 декабря в фоновом процессе. Что произошло я не понимаю.
Рядом с поломанным запросом лежит другой, к другому ресурсу и он нормально отрабатывает команды из 1С. Пробовал вручную через Mysql front написать запрос, все работает отлично.
Что то в механизме трансляции изменилось, по-моему после обновления на 8.2.15.289
32. jorikfon 319 13.01.12 12:38 Сейчас в теме
В тех журнале вот такая информация:

58:43.5240-12,SDBL,3,process=rphost,p:processName=testfastwin7,t:clientID=3804,t:applicationName=1CV8,t:computerName=ADMINWIN7,t:connectID=2236,SessionID=96,Usr=Бекетов,Trans=0,Sdbl='SELECT
Q_001_T_001._RESULT_ID,
Q_001_T_001._USER_TEXT,
Q_001_T_001._ANSWER_ID,
Q_001_T_001._ID sf_1
FROM
EDBT11354 Q_001_T_001
WHERE
(Q_001_T_001._FORM_ID = 3) AND (Q_001_T_001._RESULT_ID > 710)
ORDER BY
sf_1
'
58:43.5241-14,CALL,2,process=rphost,p:processName=testfastwin7,t:clientID=3804,t:applicationName=1CV8,t:computerName=ADMINWIN7,t:connectID=2236,SessionID=96,Usr=Бекетов,Interface=a73a0756-4f0e-4645-bda4-ec823b433ff7,Method=34,RetExcp='Ошибка внешней базы данных:
ошибка при выполнении запроса
Ошибка ODBC. SQLSTATE: 42000
Номер ошибки: 1064
Описание: [MySQL][ODBC 5.1 Driver][mysqld-5.0.92]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 ''"RESULT_ID",
T1."USER_TEXT",
T1."ANSWER_ID",
T1.ID
FROM b_form_result_answer T1 '' at line 2
'
Показать


Сам код был такой:
Запрос = Новый Запрос("ВЫБРАТЬ
	|	b_form_result_answer.RESULT_ID,
	|	b_form_result_answer.USER_TEXT КАК Ответ,
	|	b_form_result_answer.ANSWER_ID 
	|ИЗ
	|	ВнешнийИсточникДанных.www_miko_ru.Таблица.b_form_result_answer КАК b_form_result_answer
	|ГДЕ
	|	b_form_result_answer.FORM_ID = 3           
	|	И b_form_result_answer.RESULT_ID > 710	   
	|АВТОУПОРЯДОЧИВАНИЕ");
Показать


В Mysql front выполнил руками запрос, и все отрабатывает.
SELECT
Q_001_T_001.RESULT_ID,
Q_001_T_001.USER_TEXT,
Q_001_T_001.ANSWER_ID,
Q_001_T_001.ID sf_1
FROM
b_form_result_answer Q_001_T_001
WHERE
(Q_001_T_001.FORM_ID = 3) AND (Q_001_T_001.RESULT_ID > 710)
ORDER BY
sf_1
Показать


куда дальше копать не знаю :)
33. jorikfon 319 13.01.12 12:51 Сейчас в теме
34. jorikfon 319 13.01.12 13:11 Сейчас в теме
Высянил что проблема в 8.2.15.289 если поле в базе данных имеет в имени символ подчеркивания то запрос вылетает с такой ошибкой.
т.е. если в таблице все поля заданы одним словом, то проблемы нет.Если используется символ подчеркивания то возникает ошибка трансляции запроса.
35. haput 08.02.12 13:58 Сейчас в теме
36. fr.myha 27.03.12 12:22 Сейчас в теме
Спасибо большое за статью, сейчас интересуюсь это темой!
38. dagroma 114 28.04.12 12:07 Сейчас в теме
Статья очень помогла при подключении к СКУД Сфинкс. Спасибо.
39. Levran123 5 14.09.12 14:52 Сейчас в теме
(38) dagroma, не мог бы ты подробней описать процедуру подключения к сфинксу? а то у менять только named pipe конектица, а как её к 1с подключить пока не нарыл...
41. axell 28 06.11.12 16:45 Сейчас в теме
(38) dagroma,
Помоги пожалуйста. прочитал что ты сфинкс прикрутил к внешним источникам данных. Помоги пожалуйста у меня что то не получается
43. axell 28 07.11.12 10:02 Сейчас в теме
(41) axell,
Ребята ошибка релиза 1С:Предприятие 8.2 (8.2.16.352), все тоже самое воспроизвел на 1С:Предприятие 8.2 (8.2.14.540)все работает.
40. savvato 17.09.12 13:17 Сейчас в теме
наткнулся на статью случайно, но очччень помогла в одном проекте. плюсанул)
42. axell 28 06.11.12 16:54 Сейчас в теме
Хотя тут все настроил верно. Подключается успешно.
Строка соединения выглядит так
"DRIVER={MySQL ODBC 5.1 Driver};
SERVER=10.10.107.244;
DATABASE=tc-db-log;
"
Написал просто внешнюю обработку этот код отрабатывает на 5+
"Connection = Новый COMОбъект("ADODB.Connection");
ConnectionString = "DRIVER=MySQL ODBC 5.1 Driver;PWD=;PORT=3305;SERVER=10.10.107.244;UID=root;";
Попытка
Connection.Open(СокрЛП(ConnectionString));
Сообщить("Соединение осуществлено в "+ТекущаяДата());
Исключение
Сообщить(ОписаниеОшибки());
Возврат;
КонецПопытки;"

Ребята в чем у меня ошибка, что делаю не так????
44. axell 28 07.11.12 10:30 Сейчас в теме
Ребята и под занавес в 1С:Предприятие 8.2 (8.2.17.135) тоже все работает.
45. yuraos 955 04.03.13 18:49 Сейчас в теме
(22 pri_hod, поддерживаю!
Почему-бы напрямую не использовать ADO ?
46. yuraos 955 04.03.13 18:57 Сейчас в теме
(45)
Через ADO можно не только что-нибудь прочитать с сайта,
но и при желании записать какие-нибудь данные.

Например можно организовать нестандартный обмен с сайтом
с прямой записью в базу сайта, минуя файлы выгрузки.

Имеются определенные наработки в этом направлении.
47. AlekSo 13 03.07.13 07:45 Сейчас в теме
Поставил на Сервер 2008 х64. При попытке соединения выпадает ошибка:
"Ошибка ODBC. SQLSTATE: IM002
Номер ошибки: 0
Описание: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию"

Причем всё тоже самое на обычной х32 соединяется и работает. Может ещё что-то надо добавить в строку соединения?

Причём настроил в виндовском менеджере источников данных вполне нормально завёл это соединение.

PS Изменил строку подключения на DSN=MySQL получил ошибку
Ошибка ODBC. SQLSTATE: IM014
Номер ошибки: 0
Описание: [Microsoft][Диспетчер драйверов ODBC] В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу.
48. AlekSo 13 09.07.13 11:16 Сейчас в теме
Проблема решена удалением на сервере драйвера х64 и установкой х32
49. kashafeev 27.08.13 10:01 Сейчас в теме
Скачал и установил ODBC-Коннектор, настроил его как надо - Тест показывает, что соединение установлено. При добалении таблицы во внешнем источнике данных, когда прописываю DRIVER={MySQL ODBC 5.1 Driver}, выдаёт вот такую вот ошибку: "ошибка получения параметров строки соединения. Возможно, драйвер не позволяет получать параметры строки соединения". Что я делаю не так? 1С:Предприятие 8.3 (8.3.3.641)
50. alex-pro 26.11.13 16:17 Сейчас в теме
Устанавливать драйвер нужно на сервер 1С, а не на локальный комп, если у вас серверная версия 1С.
А если файловая - на свой комп, конечно.
51. ogursoft 04.12.13 13:43 Сейчас в теме
А как установить связь с базой mssql? Например при изменении данных в конфигурации 1с нужно вносить изменения в базу mssql или через определенное время выполнять синхронизацию
Прикрепленные файлы:
52. pavel_pss 246 13.02.14 16:09 Сейчас в теме
53. andrey314 11 05.03.14 11:14 Сейчас в теме
MySQL поддерживается внешними источниками неполноценно. Например запрос "ВЫБРАТЬ ПЕРВЫЕ 100" не работает. Отсюда как следствие невозможность отображения в динамических списках. В 8.3 уже есть поддержка MySQL
54. KillHunter 7 05.03.14 11:18 Сейчас в теме
А платформа 8.3 интересно поддерживат только чтение или запись тоже ?
55. andrey314 11 09.04.14 12:42 Сейчас в теме
(54) KillHunter, Судя по ссылке http://v8.1c.ru/o7/201402ext/index.htm поддерживает в 8.3 или будет поддерживать в следующих версиях
56. coollerinc 40 30.09.14 14:20 Сейчас в теме
Блин на платформе 8.3.4.496 до сих пор ошибка с полями у которых есть нижнее подчеркивание. Сейчас попробую скачать последнюю версию платформы. Если кому поможет, то надо ставить драйвер mysql x32, c x64 не работает
58. ORIX86 16.12.14 23:56 Сейчас в теме
Для решения проблемы указать
ПараметрыСоединенияССайтом.СУБД = "MySQL";
2tvad; planod; +2 Ответить
59. Ukubaeva 12.05.15 11:51 Сейчас в теме
В чем моя ошибка ,подскажите, пожалуйста!
Через внешний источник данных подключаюсь, пишу в строке соединения:
DRIVER={MySQL ODBC 5.1 Driver};
SERVER=192.168.0.12;
DATABASE=asteriskcdrdb;
Далее пишу пользователя и пароль указываю. Драйвер видит, но не подключается:
Ошибка ODBC. SQLState:HY000 Номер ошибки: 2003
Описание: [MySQL][ODBC Driver] Can't connect to MySQL server on '192.168.0.12' (10060)
Может, кто сталкивался, отчего такое возникает?
60. Ukubaeva 12.05.15 12:23 Сейчас в теме
(59) Ukubaeva, Нашли проблему, брандмауер
62. alekseineputin 19.01.16 21:45 Сейчас в теме
63. ui69 41 06.02.16 14:39 Сейчас в теме
Пока я не прописал параметры соединения вот так:
	ПараметрыСоединенияССайтом.АутентификацияСтандартная=Истина;
	ПараметрыСоединенияССайтом.ИмяПользователя=[имя_пользователя];
	ПараметрыСоединенияССайтом.Пароль=[пароль];
	ПараметрыСоединенияССайтом.СУБД="MySQL";

соединения не получалось.
В самой строке соединения только три строки - DRIVER, SERVER, DATABASE.
AgroTehnik; +1 Ответить
64. ui69 41 06.02.16 20:18 Сейчас в теме
Ха...
Да для чтения данных вообще лишних движений делать не надо, после того ка создали его в конфигураторе, в обработке просто делаем запрос, безо всяких параметров соединения.
AgroTehnik; +1 Ответить
65. imbaZeratul 16 28.09.16 17:24 Сейчас в теме
Платформа 8.3.7.1831
Внешние источники создались, все ок.
В обработке пишу
ПараметрыСоединенияССайтом = Новый ПараметрыСоединенияВнешнегоИсточникаДанных;
	ПараметрыСоединенияССайтом.СУБД = "MySQL";
	ПараметрыСоединенияССайтом.АутентификацияСтандартная=Истина;
	ПараметрыСоединенияССайтом.ИмяПользователя="root";
	ПараметрыСоединенияССайтом.Пароль="";
	ПараметрыСоединенияССайтом.СтрокаСоединения= "
	|DRIVER={MySQL ODBC 5.1 Driver};
	|SERVER=127.0.0.1;
	|DATABASE=avto_car;
	|UID=root;
	|PWD=;";
	ВнешниеИсточникиДанных.ВнешнийИсточникДанных1.УстановитьОбщиеПараметрыСоединения(ПараметрыСоединенияССайтом);
	ВнешниеИсточникиДанных.ВнешнийИсточникДанных1.УстановитьСоединение();
	Запрос = Новый Запрос("ВЫБРАТЬ
	 |	avto_klient.Ссылка,
	 |	avto_klient.klient_id,
	 |	avto_klient.klient_name,
	 |	avto_klient.klient_soname,
	 |	avto_klient.klient_sname,
	 |	avto_klient.klient_avto,
	 |	avto_klient.klient_email,
	 |	avto_klient.klient_tel,
	 |	avto_klient.klient_dateadd,
	 |	avto_klient.klient_useradd,
	 |	avto_klient.klient_city,
	 |	avto_klient.Представление
	|ИЗ
	|   ВнешнийИсточникДанных.ВнешнийИсточникДанных1.Таблица.avto_klient КАК avto_klient");
	Таблица = Запрос.Выполнить().Выгрузить();	
Показать


при подключении ошибка

http://prntscr.com/cndu9g
66. imbaZeratul 16 29.09.16 06:33 Сейчас в теме
67. klyasseo 08.09.17 14:47 Сейчас в теме
(66)Такая же проблема. Расскажите как разобрались?
68. ui69 41 24.10.17 06:25 Сейчас в теме
(67) Не видит БД, либо у пользователя с доступом к базе проблема.
Впринципе это и на скрин-шоте написано..
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Бизнес-аналитик 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Программист 1С
Москва
зарплата от 150 000 руб. до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день