В продолжение статьи о использовании внешних источников данных в 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 секунд.
Я бы добавил, что это не для всех «удаленных веб сайтов «. По причинам безопасности ODBC закрывают на удаленных веб сайтах, да и к тому же размещают внутри сети — т.е. по хорошему напрямую через интернет БД не должна быть видна. Так, что можно добавить способ через туннелирование — ssh, http. ssh — через putty. а http через скрипт на сайте.
Да и для общего интереса можно рассмотреть техники генерации запросов для пакетной вставки, для обновления данных.
(1) cool.vlad4, Конечно вы правы, просто вопросы безопасности я вынес за рамки стати для ее упрощения. Ведь механизмов удаленного взаимодействия с сайтом действительно много, да и сама субд позволяет настраивать авторизацию по IP. В моем конкретном случае сайт находится внутри локальной сети в DMZ зоне и я имею все инструменты безопасного доступа к нему из LAN.
(2) cool.vlad4, К сожалению, я не владею языком запросов MYSQL. Если кто-то в комментариях напишет пример, я допишу его в пост. По сути описанным способом можно выполнять любой произвольный MYSQL запрос. Меня в этом случае всегда выручает гугл. 🙂
Добавьте еще выборку данных и как сказано в (2) пакетную вставку данных, ибо вставлять по одной записи, когда база MySQL висит в вебе — кощунство 🙂
(4) Alxd, Выборку делаем через внешние источники используя язык запросов 1С.
Вставлять группами наверное не проблема, дайте текст запроса, я проверю и допишу в статью. Не умею, не пробовал 🙂
Показать
Как-то так делается выборка
Пакетная вставка
Показать
(5) Попробуйте, вам понравится 🙂
Спасибо большое!
(3) насчёт odbc. Делал тут одному мужику, который офигенно любит автономоность во всём, внешнюю компоненту для связи MySQL c 1C. Компонента работает без установленных на клиенте odbc драйверов и т.п, позволяет выполнять как select запросы к БД — результат возвращается как ТаблицаЗначений так и insert delete update. Как вы думаете — стоит такое поделие выложить или нет? )))) Просто одно portable-чудо уже выложил (делал изначально тому же человеку)-http://infostart.ru/public/125392/ — ну так , ни шатко ни валко))))
(10) CrazyDave, компонента в 64х системе работает?
Спасибо за пакетную вставку, 2500 тысячи записей вставляются за 2 сек. Спасибо.
Не могу подключиться с MS Server 2012 к базе MySQL на удаленном виртуальном сервере (ни по IP, ни по имени сайта)
ODBC на сервере MS настроил (Тест подключения в панели управления — проходит, список баз выдает).
Хочу подключить внешний источник данных 1С, тестирую по ADODB.
Показать
… Попытка не проходит …
http://www.connectionstrings.com/mysql/#mysql-connector-odbc-5-1
Пробовал разные варианты с сайта