8.х Обмен данными с сайтом на MySQL

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем kogor, 5 апр 2014.

  1. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Добрый день

    Необходимо осуществить обмен данными между самописной конфигурацией и сайтом на MySQL

    У меня несколько вариантов в голове:

    1. Выгрузка/загрузка с помощью обмена xml-файлами на ftp-ресурсе
    2. Выгрузка/загрузка напрямую между базами данных 1С и MySQL
    3. Использование web-сервиса 1С
    4. Использование типового функционала конфигурации Управление торговлей

    С первым вариантом проблема, потому что сайт на данный момент не обладает возможностью делать выгрузку/загрузку xml-файлами на ftp-ресурс. Веб-разработчик сайта лишь открыл доступ к MySQL базе. И что хочешь то и делай: хочешь записывай, хочешь считывай. А как это сделать - хз.

    Со вторым вариантом встает вопрос как напрямую обмениваться данными между базами 1С и MySQL

    Я прочитал, что можно сделать репликацию базы MySQL на локальный компьютер. Я так понимаю - это по сути зеркало сайта на локальном компьютере.

    А далее через драйвер ODBC для MYSQL подключаться из 1С к локальной базе MySQL и считывать из нее данные и записывать

    Подскажите кто имел опыт подобного обмена, как это сделать на практике?

    С третьим вариантом: с web-сервисами я раньше не работал. Они позволят выполнить обмен?

    Четвертый вариант: конфигурация у меня самописная, но в УТ есть обмен с web-сайтом. Если этот механизм работает, то можно было бы перетянуть этот механизм из УТ в мою конфигурацию?

    Подскажите кто-что знает по этой теме. За любою подсказку буду очень благодарен.
  2. Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Что конкретно подразумеваете под "обмен"? Только выгрузка на сайт необходимой инфы или еще загрузка заказов или еще чего в 1с?
    У меня реализован второй вариант. Т.е. интернет-магазин на MySQL. В 1с (УТ 10.3 тож переписанная) я сделал выгрузку, которая подключается к этой базе, делает запросы и изменяет информацию (в общем реализована выгрузка-обновление данных на сайте). Что касательно выгрузки с сайта в 1с это нужно вам пообщаться со спецом, который занимается сайтом, что он может предложить.

    Кстати, конфа полностью самописная или типовая, но переписанная в хлам?
    kogor нравится это.
  3. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Конфа написана с нуля. Как Вы сделали выгрузку-обновление на сайт? Мне было бы здорово это реализовать у себя. Если нужен какой то функционал из УТ - то конечно придется перетаскивать этот функционал в мою конфу
  4. Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Я поэтому и спросил, у Вас "дописанная" или своя. Допустим прикручивать на свою элементы УТ, чтобы задействовать штатную систему выгрузки на сайт, например, битрикс. Я бы не решился (хотя я Вашу конфу в глаза не видел и не знаю в каком стиле написана).
    Здесь Вам просто нужно изучить правила формирования запросов в MySQL.
    У меня простейший (на мой взгляд) вариант:
    Идет коннект:
    Код:
    СтрокаСоединения="DRIVER={MySQL ODBC 3.51 Driver};SERVER="+Параметры.Сервер+
    ";DATABASE="+Параметры.База+";UID="+Параметры.Логин+";PWD="+Параметры.Пароль+";OPTION=131072;PORT=3306;STMT=SET CHARACTER SET cp1251";  
    скл=Новый ComObject("ADODB.Connection");
    скл.CommandTimeout = 28800;
    скл.ConnectionTimeout = 28800;  
    скл.Open(СтрокаСоединения);
      
    скл.Execute("SET NAMES cp1251");
    и
    Код:
    ПрогИД = "ADODB.Recordset";
    рез=Новый COMОбъект(ПрогИД);
    Это для получения результата запроса с БП сайта
    А далее уже идут сами запросы и установление нужных параметров
    Допустим, это установление цены:
    Код:
    рез=скл.Execute("UPDATE jos_vm_product_price SET product_price="+Цена+",product_currency='RUB',shopper_group_id='5' WHERE product_id = "+идтов);
    А это получение значения одного из реквизитов товара(в данном случае имени файла картинки):
    Код:
    рез=скл.Execute("SELECT * FROM jos_vm_product WHERE product_id = "+идтов);
    КартинкаСайт=рез.Fields("product_thumb_image").Value;
    Писалось все для магазина "Joomla".
    kogor нравится это.
  5. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    Спасибо, Alex_fess. Попробую сделать так
  6. Alex_fess
    Offline

    Alex_fess Опытный в 1С

    Регистрация:
    23 мар 2011
    Сообщения:
    256
    Симпатии:
    7
    Баллы:
    29
    Может кто получше вариант посоветует?
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Каким образом хотите организовать обмен ?
  8. TopicStarter Overlay
    kogor
    Offline

    kogor Опытный в 1С

    Регистрация:
    5 фев 2010
    Сообщения:
    412
    Симпатии:
    0
    Баллы:
    26
    варианты о которых я знаю, я перечислил. Какой делать пока не знаю, буду пробовать. Обмениваться надо много чем: контрагентами, заказами, бонусами, которые клиенты получают за покупки.

    обмены должны происходить часто, примерно раз в 5-10 мин.

    В распоряжении есть Windows Server, на котором установлена 1С. База пока в файловом режиме, если нужно, переведем на SQL

    Какой посоветуете?
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    Web-сервис самый эффективный.
    kogor нравится это.

Поделиться этой страницей