1С (1C) и MySQL: подключение пошагово
Описание доступа к MySQL базе данных из 1С, НЕ перенос 1C на эту базу.
0. Предполагается, что 1С и MySQL уже есть, настроены и работают нормально. На MySQL известна хотя бы одна таблица с данными и полями в ней.
1. Зайдите в “Панель управления” - “Администрирование” - “Источники данных (ODBC)”, выберите там вкладку “Драйверы”. Среди множества драйверов там должен быть и MySQL. Если есть - переходим к п. 3
2. Нужно скачать и установить драйвер - отсюда. Выбирайте ODBC, затем я выбирал “MySQL Connector/ODBC 5.1 Windows MSI Installer (x86)”. Если у вас очень старый MySQL, возможно, имеет смысл взять 3.51, но 5.1 заработал с MySQL 5.0.
После установки проверьте источники данных еще раз - драйвер должен появиться.
3. В 1С пишем:
con = СоздатьОбъект("ADODB.Connection");
cmd = СоздатьОбъект("ADODB.Command");
//следующие 2 строки - на самом деле одна. Никто не мешает вынести ее в переменную, при желании.
con.Open ("DRIVER={MySQL ODBC 5.1 Driver};SERVER=server-ip;PORT=3306;
DATABASE=dbname;uid=user;pwd=pass;”);
cmd.ActiveConnection = con;
Обратите внимание, раньше вместо 5.1 писалось 3.51. Если Вы допустите в той строке ошибку, то получите
Microsoft OLE DB Provider for ODBC Drivers: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
4. При ошибке
Access denied for user ‘user‘@’user-ip‘ (using password: YES)
нужно разрешить доступ данному пользователю к данной базе с данного хоста.
Лично я это делаю так:
grant all privileges on dbname.* to user@’user-ip‘ IDENTIFIED BY ‘pass‘;
5. Получаем данные в цикле:
Сет = CreateObject("ADODB.Recordset");
ТекстЗапроса = "select id, name from table;";
Сет.Open (ТекстЗапроса, con, 1);
Пока Сет.EOF() = 0 Цикл
Сообщить (" id="+Сет.Fields.Item("id").value+" name="+Сет.Fields.Item("name").value);
Сет.MoveNext();
КонецЦикла;
con.Close()
6. Изменение, вставка:
cmd.CommandText = "UPDATE table set name='qqqqq' WHERE id='sample'";
cmd.Execute();
Все!:)