Страницы статьи:

Цель взаимодействия MySQL и 1С

В последнее время наблюдается активное развитие интернет-магазинов в России, где продавцы предлагают заказать товар напрямую с сайта.

В то же время  программы для бухгалтерского и управленческого учета остаются старыми – в основном это 1С Предприятие.

Необходимо уйти от ручного труда и автоматизировать обмен данными между базами данных 1С и MySQL, переносить справочники, например номенклатуру, контрагентов, цены, скидки и другие, а так же переносить заказы.

Заполненная таблица

Заполненная таблица

Авторские права на предоставленный материал принадлежат автору сайта http://extremallife.ru

Мне поставили задачу перенести справочники из 1С в базу даннх MySQL, как это сделать в кратце я описывал в статье Как подключить 1С к базе данных MySQL. Теперь я постараюсь описать процесс более подробно и с примерами переноса данных. В интернете предлагают в начале сделать выгрузку во внешний файл, а потом загрузить его в MySQL. Я расскажу как можно обойтись без этих фалойв, а выполнить перенос напрямую через ODBC-драйвер.

Страницы статьи:

.

Комментарии

Комментариев: 29

  1. Макс ноября 5, 2009 14:36

    А если база MySQL располагается не на локальном компе, и прямого доступа к нет (только phpmyadmin) как быть, что можно придумать?

  2. Гель ноября 5, 2009 16:26

    а че нельзя прям к dbf файлу mysql падключить?

  3. Макс ноября 5, 2009 18:24

    как выгрузить данные из 1с теперь понятно, а как из MySQL загрузить в 1с?

  4. admin ноября 5, 2009 21:58

    Это еще проще. Читать всегда проще, чем записывать.
    Просто необходимо выполнить нужный запрос.
    Стр = “SELECT * FROM `tovar` WHERE `kod` = «чемуто»; // Это MySQL запрос в чистом виде. справку по ним можно найти в нете.

    ну и далее
    Соединение.Execute(Стр);

    вроде так.

  5. admin ноября 5, 2009 22:01

    2 Гель можно, наверное, средствами php. Да и средствами 1С в этом случае можно, но не к той DBF ке, которая входит в состав 1С

  6. admin ноября 5, 2009 22:04

    2 Макс как ты обращаешься к phpmyadmin?
    наверное в адресной строке пишешь что то вроде 882.245.144.14/tools/phpmyadmin
    или
    extremallife.ru/phpmyadmin (например)
    ну и указывай в качестве сервера например
    SERVER=882.245.144.14
    или
    SERVER=extremallife.ru
    Если хост в нете, то все отлично работает – я пробовал

  7. Гель ноября 5, 2009 22:42

    а чем 1с dbf плоха? там инфа мгновенно обнавляется, и перебросы никакие ненужны..

  8. Макс ноября 6, 2009 0:32

    Гель, это нужно для обновление информации на сайте (к примеру), а не для хранения вместо dbf.

    admin, на счёт phpmyadmin я потом сам понял, затормозил малехо =)

    Процедура Загрузить()
    Стр = «SELECT * FROM `tovar` WHERE `kod` = 2867″;
    Соединение.Execute(Стр);
    КонецПроцедуры

    я так и сделал впринципе, процедура выполнилась без ошибок (значит всё ок, эта строка из БД получена), а вот как бы её увидеть, например при помощи Сообщить() ?

  9. Макс ноября 6, 2009 0:40

    Гель, dbf файлу mysql можно подключить при помощи php, но это довольно мудрёные скрипты, и это не удобно, если ты будешь обращаться к файлику dbf, а 1С будет открыта, то ни файл не сможет открыться, т.к он уже открыт 1С_кой.
    ещё видел народ записывал данные в mysql из 1С при помощи php используя сслыки $_GET, но это и не безопасно и на мой взгляд не особо удобно, и таким способом из mysql в 1С уже не получишь данные, хотя как вариант можно иметь ввиду =)).

  10. Макс ноября 6, 2009 0:46

    кстати, какие ещё команды кроме Execute, Open, Close можно выполнять?

  11. Владимир ноября 7, 2009 12:20

    Ребята, если кто забредет сюда также как и я в поисках информации о том, как устранить ошибку при использовании моста jdbc-odbc: «источник данных не найден и не указан драйвер, используемый по умолчанию» (ошибка появляется не только в Java), то вот дополнительная инфа. Устанавливать драйвер надо как написано в этой статье. Затем можно будет подключаться к базе по такому URL

    String url = «jdbc:odbc:ConnectionToDB»;
    …………
    connection = DriverManager.getConnection(url,login,pass);

    Здесь ConnectionToDB – это не имя базы данных, как говорится в некоторых статьях и мануалах. Это имя источника данных. В качестве него автор статьи использовал «MySQL ODBC 5.1 Driver»

  12. admin ноября 7, 2009 21:44

    Абсолютно точно, это видно из строки
    СтрокаСоединения = «DRIVER=MySQL ODBC 5.1 Driver;SERVER=localhost;DataBase=test;UID=root;PWD=;»

    Это имя можно посмотреть в ПУСК-настрока – панель управления – Администрирование – Источникик данных (ODBC)- Источники данных пользователя (в поле Имя)

  13. Макс ноября 8, 2009 0:22

    нашёл внешнюю компоненту, при помощи которой теперь могу сделать всё что угодно с базой MySQL из 1С http://turbobit.net/56uk7adunp22.html
    спасибо админу за помощь.

  14. Полуэктт Электронович ноября 15, 2009 1:04

    Здравствуйте , мне очень понравился extremallife.ru , как можно обменяться ссылками ? или купить у вас место под рекламу?
    Если конечно администрация этим занимается , куда писать? И что насчет расценнок?

    p/s
    Куда писать не знал поэтому написал сюда
    если что извеняюсь перед администрацией.

  15. admin ноября 15, 2009 1:11

    Афтар пеши есчо… Все равно одобряю камменты руками и удаляю левые сцылки. ;-)

  16. Simply ноября 17, 2009 14:25

    А хранимые процедуры или функции кто-нибудь использует?

    Про Insert – эффективней использовать запись сразу всех данных или максимально-возможного количества (многострочная вставка, кажется называется).
    Про Select – получение быстрее происходит при использовании объекта Рекордсет.
    Rst=CreateObject(»ADODB.Recordset»);

    Rst.Open(Команда,Conn,РежКурсора,РежЧтения);
    где,
    Команда – «select …»;
    Conn – объект ADODB.Connection;
    РежКурсора – 1/0 – перемещать курсор по выборке только вперед (по умолчанию 0);
    РежЧтения – 0/1 – режим чтения/записи (по умолчанию 0, записывать через Conn.Execute(»insert/update …»)).

  17. Simply ноября 17, 2009 14:27

    Сорри, опечатка – Режим чтения по умолчанию 1!

  18. Simply ноября 21, 2009 18:40

    Цитата:
    «нашёл внешнюю компоненту, при помощи которой теперь могу сделать всё что угодно с базой MySQL из 1С http://turbobit.net/56uk7adunp22.html
    спасибо админу за помощь.»
    А что это за ВК? Есть ее описание? Мануал? Als-файл?

  19. Simply ноября 21, 2009 18:41

    Сорри, поспешил с воросами. Я знаю эту компоненту, она подглючивает :( .

  20. Макс ноября 22, 2009 13:10

    я её хорошо затестил, у меня ни разу ни глюконула

  21. Константин декабря 6, 2009 16:27

    Прошу прощения,нельзя ли ОЧЕНЬ ПОДРОБНО остановиться на синтаксисе и построении запроса(Начиная со «Стр=……).Очень-очень нужно.Заранее благодарен.

  22. Макс декабря 6, 2009 18:00

    Константин, напиши своё мыло, я тебе вышлю готовый ert, мой предыдущий пост дядя админ уничтожил, как обычно! =(

  23. admin декабря 6, 2009 18:07

    Посты с внешними ссылками удаляются автоматом, потому как спама много.)))
    Видимо в комментарии ссылка была.
    Руками я практически ничего не удаляю, тем более в таких темах.

  24. Макс декабря 6, 2009 18:15

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

  25. admin декабря 6, 2009 18:21

    А вот такие, как выше, комментарии я чищу руками. Потому как содержат ссылку на твой сайт, Евсенкин Максим Александрович)))
    Если хочешь, чтобы была ссылка на твой блог/сайт – отпиши прямо, хочу ссылку – договоримся)))

  26. admin декабря 6, 2009 18:22

    Чтоб всем было хорошо, и тебе и мне и сайты продвигались)))

  27. Константин декабря 6, 2009 19:20

    Макс!!заранее благодарен…berconst@ukr.net

  28. Макс М. декабря 28, 2009 18:24

    Макс!!тоже буду очень благодарен… manoulenko@ukr.net

  29. Макс декабря 28, 2009 21:09

    Макс М. отправил =)

Имя (обязательное)

Email (обязательное)

Сайт

Выскажитесь

Я не робот.Нажми обязательно