Изменение информации на удаленном веб сайте из 1С через ODBC драйвер для mysql

22.09.11

Интеграция - Сайты и интернет-магазины

В статье описана технология взаимодействия с mysql базой данных из 1С:Предприятия через ODBC драйвер.

В продолжение статьи о использовании внешних источников данных в 1С.

 

У меня появилась интересная задача. Необходимо на интернет сайте держать список актуальных телефонов клиентов компании. Самый актуальный список этих телефонов есть в нашей CRM системе.

Задача простейшая.
Скачиваем свежий ODBC драйвер для mysql с сайта производителя.

В 1С создаем обработку с следующим кодом.

Код
СтрокаСоединенияСАстерискСервером   =   "
 |DRIVER={MySQL ODBC 5.1 Driver};
 |SERVER=wwwhost_na_korotom_stoit_mysql_base;
 |DATABASE=imya_database_s_telefonami; 
 |UID=user_s_pravami_zapisi_v_database;
 |PWD=password_usera_s_provami_zapisi; 
   
Соединение = Новый COMОбъект("ADODB.Connection");
   
Соединение.ConnectionString = (СтрокаСоединенияСАстерискСервером);
   
Попытка
      Соединение.Open();
      Сообщить("MySQL база подключена!!!");
Исключение
      Сообщить("Не могу подключиться к базе!!! ");
КонецПопытки;



Если верхний код отработал без ошибок, значит, мы успешно соединились с базой данных и теперь можем с ней делать, что нам нужно.

Очищаем все записи из таблицы с телефонами

Код
Попытка
      Соединение.Execute("truncate table callerid;");
      Сообщить("Мы успешно все подчистили!");
Исключение
      Сообщить("Что то пошло не так :( ");
КонецПопытки;



Добавляем новую строчку с контактной информацией

Код
АбонентТранслит = "Vaisya Pupkin";
НомерТелефона  = "74952293042";

Стр = "INSERT INTO `callerid` SET `number`  ="+""""+НомерТелефона+ """"+",  `name`  ="+""""+АбонентТранслит+"""";

Попытка
      Соединение.Execute(Стр);
      Сообщить("Запись с Васей добавлена в базу сайта");
Исключение
      Сообщить("Что то пошло не так :( ");
КонецПопытки;


p.s. В реальной жизни этим методом я ежедневно обновляю информацию на нашей АТС (asterisk) о контактных телефонах клиентов. Задача выполняется фоновым заданием на сервере 1С. Около 1200 записей заливается 12 секунд.

См. также

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 3.0 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 3.0. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц. Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер). Интегрировано в Чек ККМ, Рабочее место кассира (РМК)

24000 руб.

02.11.2024    1288    10    0    

8

Сайты и интернет-магазины Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Платные (руб)

Интеграция сервиса dolyame.ru с 1С:Розница 2.3 для приема платежей в рассрочку. Готовое интеграционное решение для оплаты покупок Долями в 1C:Розница 2.3. Реализовано в виде расширения. Интеграция сервиса dolyame.ru для приема платежей в рассрочку. Поддерживает работу от разных юридических лиц.Работа: в составе РИБ, отдельно от РИБ, тонкий, толстый клиент, web-клиент (через интернет-браузер).

22440 руб.

19.12.2023    7343    46    12    

42

Сайты и интернет-магазины WEB-интеграция Системный администратор Программист Пользователь Платформа 1С v8.3 1C:Бухгалтерия 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    19352    24    22    

20

Прайсы Оптовая торговля Сайты и интернет-магазины Программист Пользователь Платформа 1С v8.3 Оперативный учет Управляемые формы 1С:Управление торговлей 11 Транспорт, автопарки, такси Управленческий учет Платные (руб)

Внешняя обработка адаптирована для 1C: УТ 11, предназначена для наполнения вашей базы данных товарами и сопутствующей информацией, предоставляемой b2b.4tochki.ru, обновления остатков и цен.

8160 руб.

31.01.2020    32464    17    7    

16

Сайты и интернет-магазины Программист Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Платные (руб)

Данный модуль предоставляет возможность выгружать заказы из 1С: Управление торговлей 11 версии в "MEASOFT" (ранее "Курьерская служба 2008").

9600 руб.

27.04.2022    11874    21    3    

12

Сайты и интернет-магазины Программист Пользователь Платформа 1С v8.3 План видов характеристик 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Расширение предоставляет возможность создавать и редактировать номенклатуру с большим количеством характеристик и фотографий для них в один присест. Экономит время наполнения сайта товарами с нескольких минут на позицию до одной. Встроенный функционал сжатия фотографий. Простота и удобство позволяют значительно сэкономить время на типовых операциях и дисковое место под фотографии товара.

3600 руб.

25.05.2020    21188    16    16    

20
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. cool.vlad4 2 22.09.11 10:38 Сейчас в теме
Я бы добавил, что это не для всех "удаленных веб сайтов ". По причинам безопасности ODBC закрывают на удаленных веб сайтах, да и к тому же размещают внутри сети - т.е. по хорошему напрямую через интернет БД не должна быть видна. Так, что можно добавить способ через туннелирование - ssh, http. ssh - через putty. а http через скрипт на сайте.
3. jorikfon 332 22.09.11 10:51 Сейчас в теме
(1) cool.vlad4, Конечно вы правы, просто вопросы безопасности я вынес за рамки стати для ее упрощения. Ведь механизмов удаленного взаимодействия с сайтом действительно много, да и сама субд позволяет настраивать авторизацию по IP. В моем конкретном случае сайт находится внутри локальной сети в DMZ зоне и я имею все инструменты безопасного доступа к нему из LAN.

(2) cool.vlad4, К сожалению, я не владею языком запросов MYSQL. Если кто-то в комментариях напишет пример, я допишу его в пост. По сути описанным способом можно выполнять любой произвольный MYSQL запрос. Меня в этом случае всегда выручает гугл. :)
10. CrazyDave 02.05.12 16:06 Сейчас в теме
(3) насчёт odbc. Делал тут одному мужику, который офигенно любит автономоность во всём, внешнюю компоненту для связи MySQL c 1C. Компонента работает без установленных на клиенте odbc драйверов и т.п, позволяет выполнять как select запросы к БД - результат возвращается как ТаблицаЗначений так и insert delete update. Как вы думаете - стоит такое поделие выложить или нет? )))) Просто одно portable-чудо уже выложил (делал изначально тому же человеку)- http://infostart.ru/public/125392/ - ну так , ни шатко ни валко))))
11. Jatz 16.05.12 11:40 Сейчас в теме
(10) CrazyDave, компонента в 64х системе работает?
2. cool.vlad4 2 22.09.11 10:40 Сейчас в теме
Да и для общего интереса можно рассмотреть техники генерации запросов для пакетной вставки, для обновления данных.
jorikfon; +1 Ответить
4. salexdv 2367 22.09.11 10:54 Сейчас в теме
Добавьте еще выборку данных и как сказано в (2) пакетную вставку данных, ибо вставлять по одной записи, когда база MySQL висит в вебе - кощунство :-)
jorikfon; +1 Ответить
5. jorikfon 332 22.09.11 10:57 Сейчас в теме
(4) Alxd, Выборку делаем через внешние источники используя язык запросов 1С.
Вставлять группами наверное не проблема, дайте текст запроса, я проверю и допишу в статью. Не умею, не пробовал :)
8. salexdv 2367 22.09.11 11:13 Сейчас в теме
(5) Попробуйте, вам понравится :-)
6. salexdv 2367 22.09.11 11:01 Сейчас в теме
// Выборка данных
RS = Новый COMОбъект("ADODB.Recordset");
RS.ActiveConnection = Connection;	

query = "SELECT бла-бла-бла"

Попытка                      
 RS.Open(query);
Исключение
 Предупреждение(ОписаниеОшибки());
 Возврат Ложь;	
КонецПопытки;
	
Если RS.EOF() И RS.BOF() Тогда
  (результат запроса пустой)
   Предупреждение("Нет запрашиваемых данных.");
Иначе
  RS.MoveFirst();
  Пока НЕ RS.EOF() Цикл
    Поле1 = RS.Fields.Item("BlaBla");
    RS.MoveNext();	
  КонецЦикла;
КонецЕсли;
RS.CLOSE();
Показать


Как-то так делается выборка
7. salexdv 2367 22.09.11 11:04 Сейчас в теме
Пакетная вставка
query = "INSERT INTO products_
        |(product_id , product_name )
	|VALUES 
        |('1', 'Товар №1'),
        |('2', 'Товар №2'),
        |('3', 'Товар №3')";
Попытка
      Соединение.Execute(query);
      Сообщить("Мы успешно все вставили!");
Исключение
      Сообщить("Что то пошло не так :( ");
КонецПопытки;
Показать
jorikfon; +1 Ответить
9. fr.myha 27.03.12 12:20 Сейчас в теме
12. atol_zlat 28.05.15 07:40 Сейчас в теме
Спасибо за пакетную вставку, 2500 тысячи записей вставляются за 2 сек. Спасибо.
13. Nkolp 16 11.09.15 14:54 Сейчас в теме
Не могу подключиться с MS Server 2012 к базе MySQL на удаленном виртуальном сервере (ни по IP, ни по имени сайта)
ODBC на сервере MS настроил (Тест подключения в панели управления - проходит, список баз выдает).
Хочу подключить внешний источник данных 1С, тестирую по ADODB.
АДО = Новый ComОбъект("ADODB.Connection");
 СтрокаСоединения = "
// |Provider=MSDASQL;
 |DRIVER={MySQL ODBC 5.3 Unicode Driver};
 |Server=95.ььь.ььь.ььь;
 |PORT=3306;
 |DATABASE=.......;
 |User=.......; // сначала пробовал UID и PWD соответственно
 |Password=......;
 //|Socket=MySQL;
 |Option=3;
 |";
 Попытка
  АДО.Open(СтрокаСоединения);
Показать

... Попытка не проходит ...
Пробовал разные варианты с сайта http://www.connectionstrings.com/mysql/#mysql-connector-odbc-5-1
Оставьте свое сообщение