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

Работы на стороне сервера MySQL

Как пример  - я пользуюсь хостингом на www.sweb.ru буду описывать его.

MySQL-сервер на виртуальном хостинге по умолчанию принимает только локальные подключения. Это значит, что любая программа, осуществляющая подключение к MySQL-серверу, обязательно должна располагаться на том же физическом сервере, где запущен MySQL-сервер. 
Если Вам требуется работать с Вашими базами данных MySQL удалённо (например, с помощью установленного на собственном компьютере MySQL-клиента либо со стороннего сервера, где размещён сайт, которому требуется работать с Вашей базой данных у нас на хостинге), то существует возможность разрешить удалённые подключения. 
(Это выдержка описания с сайта поддержки - подробнее: http://help.sweb.ru/entry/2322/)

Итак, базу данных мы открыли для доступа со стороны  сервера MySQL. Переходим к настройке сервера или компьютера, где установлена 1С.

Работы на стороне сервера (компьютера) с 1С

Тут первый подводный камень: самый новый драйвер не захотел коннектиться пришлось устанавливать не первой свежести – качаем отсюда: http://dev.mysql.com/downloads/connector/odbc/5.1.html#downloads версию 3.51.30 для своей версии WINDOWS(у меня x64).

Открываем  1С и пишем следующие строки:

СтрокаПодключения = "DRIVER={MySQL ODBC 3.51 Driver};SERVER=Сервер;PORT=3306;DATABASE=ИмяБазы;uid=ИмяПользоватля;pwd=Пароль;";

Connection  =  Новый COMОбъект("ADODB.Connection");

Recordset  =  Новый COMОбъект("ADODB.Recordset");            

Connection.Open(СтрокаПодключения);

ТекстЗапроса = "select categoryID, name from categories;"; // тут запрос к Вашей таблице расположенной на MySQL

Recordset.Open(ТекстЗапроса, Connection, 1);

Пока Recordset.EOF() = 0 Цикл

                Сообщить (" id="+Recordset.Fields.Item("categoryID").value+" name="+Recordset.Fields.Item("name").value);

                Recordset.MoveNext();

КонецЦикла;

Connection.Close();

 

В теле любой процедуры (я сделал внешнюю обработку и прописал в обработчик нажатия кнопки). Если выводятся сообщения по выполненному запросу – Ура вы подключились.

Теперь встает вопрос: что мне с этим делать…. Все очень просто – теперь у Вас есть доступ к базе данных в которой Вы можете делать что угодно: добавлять, удалять, обновлять записи.

Дополнительно настроив FTP можно выгружать картинки из 1С на сайт. Имея подключение к базе, можно в режиме онлайн загружать заказы с сайта.

Можно написать все что угодно – т.е. построить на 1С систему управления контентом сайта.

Конечно, можно сказать  «Зачем изобретать велосипед – ведь есть уже готовые решения». Не могу не согласиться – но есть несколько бонусов – при самостоятельной реализации данного механизма.

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

Второе – тренировка ума программиста (для профессионала) и неплохой опыт для начинающих.

Третье – вы будете на 100% уверенны, что если что то не так то надо копать в своем коде – а не в закрытых кодах сторонних разработчиков.

Четвертое – маленькие организации  и их очень большое количество  – не могут приобрести готовые решения – пожалуйста- все в ваших руках.

Я ни в коем случае, не отговариваю рассматривать готовые решения по синхронизации данных с сайтом – просто описываю альтернативные пути решения задач.

Рейтинг@Mail.ru